QT开发中文网

如果文件名带.,baseName不对

你说得对,baseName() 方法仅会返回最后一个点之前的部分,如果文件名中包含多个点(如 file.name.txt),它只会返回 file.name。如果你想要处理这种情况,可以手动分割文件名。下面是一个示例代码,展示如何在有多个点的情况下获取不带后缀的文件名:

#include <QCoreApplication>
#include <QFileInfo>
#include <QString>
#include <QDebug>

QString getBaseName(const QString &fileName) {
    // 获取文件后缀
    QFileInfo fileInfo(fileName);
    QString suffix = fileInfo.suffix();

    // 如果没有后缀,则直接返回完整文件名
    if (suffix.isEmpty()) {
        return fileName;
    }

    // 从完整文件名中去掉后缀
    return fileName.left(fileName.length() - suffix.length() - 1); // 减去后缀长度和点
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString filePath = "example/file.name.txt"; // 示例文件路径

    QFileInfo fileInfo(filePath);
    
    QString fullFileName = fileInfo.fileName(); // 获取完整文件名(包含后缀)
    QString customBaseName = getBaseName(fullFileName); // 自定义函数获取不带后缀的文件名
    QString suffix = fileInfo.suffix();     // 获取文件后缀

    qDebug() << "完整文件名:" << fullFileName;  // 输出: file.name.txt
    qDebug() << "不带后缀的自定义文件名:" << customBaseName;  // 输出: file.name
    qDebug() << "文件后缀:" << suffix;        // 输出: txt

    return a.exec();
}

在这个示例中,我们创建了一个 getBaseName 函数,该函数接收一个带有扩展名的完整文件名,并通过计算去掉扩展名前面的字符来返回不带扩展名的部分。这样可以确保无论你的文件名中包含多少个点,都能正确获取到基础名称。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=13052

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?