【问题标题】:Getting filename from path using QString basic functions使用 QString 基本函数从路径获取文件名
【发布时间】:2016-03-14 11:45:41
【问题描述】:

QString 有一些路径:

QString path = "C:/bla/blah/x/y/file.xls";

我认为获得/ 的最后一个偏移量可能是一个好的开始。然后我可以使用right 方法(没有双关语)来获取该字符之后的所有内容:

path = path.right(path.lastIndexOf("/"));

或者以更兼容的方式:

path = path.right(std::max(path.lastIndexOf("\\"), path.lastIndexOf("/")));

两者都有相同的坏结果:

ah/x/y/file.xls

这里有什么问题?显然这条路过早地被切断了,但更奇怪的是它根本没有在任何/ 处被切断。

【问题讨论】:

  • QFileInfo( "C:/bla/blah/x/y/file.xls" ).fileName();.

标签: qt path qstring


【解决方案1】:

您想要的QString 方法是mid,而不是rightright 从字符串末尾开始计数):

path = path.mid(path.lastIndexOf("/"));

mid 有第二个参数,但是当它被省略时,你会得到字符串的最右边部分。

对于更简洁/更通用的代码:

QFileInfo fi("C:/bla/blah/x/y/file.xls");
QString fileName = fi.fileName(); 

NB QFileInfo 在不需要的时候不会查询文件系统,而这里不需要,因为所有的信息都在字符串中。

【讨论】:

    【解决方案2】:

    来自 QString::right():

    "返回一个包含字符串最右边 n 个字符的子字符串。"

    您正在使用索引作为计数。你必须使用 .size() - .indexOf()。

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 2011-11-16
      • 2011-02-01
      • 2013-12-08
      • 2012-01-21
      • 2015-04-22
      • 2014-07-24
      • 2012-10-25
      相关资源
      最近更新 更多