【Qt】QString删除后缀和部分删除的一些用法

删除文件后缀名六法
本文介绍六种使用QString操作删除图片文件名后缀的方法,包括left、chop、replace、resize、truncate和remove等函数的应用技巧。

在导入图片的时候,想只显示名字不显示后缀,那么如何删除掉后缀呢,一起来看一下;

这边主要总结了六种方法:filename.left;filename.chop;filename.replace;filename.resize;filename.truncate;filename.remove

1. filename.left(n);取filename左边size - n长度的数据;

这边主要是去除图片.png的后缀,所以 -4,实际情况根据你要删除的进行修改

QString filename;
//“movie.png”
filename=filename.left(filename.size() -4);
//“movie”

2. filename.chop(n);从字符串filename尾部删除 n 个字符

QString filename;
//“movie.png”
filename.chop(4);
//“movie”

3. filename.replace(n,m,str);用str替换从位置 n开始长度为m的字符,

QString filename;
//“movie.png”
filename.replace(filename.size()-4,4,"");
//“movie”

4. filename.resize(n);改变字符串长度为n

QString filename;
//“movie.png”
filename.resize(filename.size()-4);
//“movie”

5. filename.truncate(n);从位置 n 处截取字符串

QString filename;
//“movie.png”
filename.truncate(filename.size()-4);
//“movie”

6. filename.remove(n, m);从位置 n 处开始删除 m 个字符

QString filename;
//“movie.png”
filename.remove(filename.size()-4,4);
//“movie”

以上就是全部内容啦,谢谢观看!

<think>好的,我现在需要回答用户关于在Qt中获取不带后缀的文件名的实现方法。首先,我应该回顾用户提供的引用内容,看看是否有相关信息。 根据引用[1],QFileInfo的baseName()方法可以直接获取不含后缀的文件名。例如,使用QFileInfo.fileName()得到带后缀的文件名,再用baseName()去掉后缀。引用[3]也提到类似的方法,使用QFileInfo的fileName()suffix(),但用户可能更倾向于直接用baseName()更简洁。 需要注意的是,如果文件名中有多个点号,比如"file.tar.gz",baseName()可能只会去掉最后一个后缀,得到"file.tar"。这时候可能需要其他处理,但用户没有提到这种情况,可能默认常规用法即可。 另外,引用[2][4]主要关于文件路径编码,可能不直接相关,但可以忽略。用户明确需要的是获取不含后缀的文件名,所以重点在QFileInfo的baseName方法。 总结步骤:创建QFileInfo对象,调用baseName()方法。同时提醒用户注意多后缀的情况,可能需要额外处理。示例代码可以参考引用中的写法,确保路径正确,并处理可能的异常情况。</think>在Qt中获取不含后缀的文件名可以通过以下两种方法实现: ### 方法一:直接使用QFileInfo::baseName() ```cpp QFileInfo fileInfo("D:/test/image.jpg"); QString baseName = fileInfo.baseName(); // 返回"image" ``` 这是最简洁的实现方式,baseName()方法会自动分割文件名后缀[^1][^3]。 ### 方法二:组合fileName()与suffix() ```cpp QFileInfo fileInfo("E:/doc/report_v2.pdf"); QString nameWithoutSuffix = fileInfo.fileName().section('.', 0, -2); // 返回"report_v2" ``` 此方法通过分割文件名处理多后缀场景(如.tar.gz文件),section()函数以`.`为分隔符截取前半部分[^3]。 ### 注意事项: 1. 当文件路径包含中文时,需确保使用QString正确编码路径 ```cpp QFileInfo fileInfo(QString::fromLocal8Bit("D:/文档/测试文件.odt")); ``` 2. 路径有效性验证建议添加: ```cpp if(!fileInfo.exists()) { qDebug() << "文件不存在"; } ``` 3. 对隐藏文件(如`.gitignore`),baseName()会正确处理,返回空字符串前自动过滤点号 ### 示例代码解析 ```cpp QString filePath = ":/resources/config.xml"; // 资源文件路径 QFileInfo fi(filePath); qDebug() << "原始路径:" << fi.absoluteFilePath(); // 输出完整路径 qDebug() << "无后缀名:" << fi.baseName(); // 输出"config" ``` ### 扩展应用场景 该方法常用于: 1. 文件管理器显示精简文件名 2. 日志文件按日期命名时提取日期部分(如`log_20230815.txt`) 3. 批量重命名操作中的文件名处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

logani

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值