• 5619阅读
  • 4回复

[提问]如何检测路径有效性?[已解决] [复制链接]

上一主题 下一主题
离线米尔利安
 

只看楼主 倒序阅读 楼主  发表于: 2011-07-13
QT中有什么方法可以检测一个QString是否为有效的路径?或者是否为有效的文件名?
程序生成的文件需要保存在某个路径下,该路径可以手动设定,但是如何在不合规范的情况下拒绝其输入?


我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线dbzhang800

只看该作者 1楼 发表于: 2011-07-13
看Manual

QDir
QFileInfo
离线米尔利安

只看该作者 2楼 发表于: 2011-07-13
不是检测该路径是否存在,而是检测该字符串是否可以成为一个路径。。。
比如"c:\abcdefghijklmn\"就是一个有效的路径字符串,虽然abcdefghijklmn文件夹不一定存在。
但是"sdafsds"就不能算是路径字符串了,同理"dadw;dfaew"也不能成为一个有效的文件名。

我在QDir里只看到检测路径是否存在的函数,没有有效性检测的函数。
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线dbzhang800

只看该作者 3楼 发表于: 2011-07-13
引用第2楼米尔利安于2011-07-13 16:10发表的  :
不是检测该路径是否存在,而是检测该字符串是否可以成为一个路径。。。
比如"c:\abcdefghijklmn\"就是一个有效的路径字符串,虽然abcdefghijklmn文件夹不一定存在。
但是"sdafsds"就不能算是路径字符串了,同理"dadw;dfaew"也不能成为一个有效的文件名。
我在QDir里只看到检测路径是否存在的函数,没有有效性检测的函数。

1. "sdafsds" 为什么不算是路径字符串??
2. "dadw;dfaew" 为什么不能成为一个有效的文件名??
离线米尔利安

只看该作者 4楼 发表于: 2011-07-13
回 3楼(dbzhang800) 的帖子
我明白了。按照微软的命名规则,分号不算作无效的文件名。
至于"sdafsds",是不能够作为一个绝对路径出现的。

对绝对路径的检测可以使用QDir::isAbsolute()来判断,但它不能够屏蔽诸如 * " 等的特殊字符。

对特殊字符的检测,可以使用QRegExp + QString::contains()来实现。
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
快速回复
限100 字节
 
上一个 下一个