本文主要是介绍Qt描述路径Qfile时绝对路径不明错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我日那些看不见的字符!!!
我折腾了2天艹
感谢:\u202a 神奇的控制字符 让我知道了路径不能随便粘贴……
起因是这样的,我想试一下qt的正则表达式截取文件内容,需要QFile取文件路径,结果我习惯性地从文件属性的安全里找对象路径(文件属性->安全->对象名称处复制)
然后我粘在了一个按钮代码上(正则表达式还没用上呢)
void MainWindow::on_pushButton_clicked()
{QString displayString;std::string a="C:\\Users\\23216\\Desktop\\1.txt";//这是文件属性粘的
// std::string a="C:\\Users\\23216\\Desktop\\1.txt";//这是手敲的QFile file(QString::fromStdString(a));qDebug()<<file.errorString();qDebug()<<file.fileName();if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"Can't open the file!"<<endl;}while(!file.atEnd()){QByteArray line = file.readLine();QString str(line);qDebug()<< str;displayString.append(str);}
}
结果输出是这样的,
在调试时发现前面总有一传诡异字符,这样路径确实不对了
后来
我试了路径符号,证实了"\\"
和"/"
是一样的,只有“\”
是单纯的转义字符不正确。
再后来,我不断地试验函数
//QString::fromLocal8Bit() (曾经在Windows上路径的问题这样解决过)
QFile file(QString::fromLocal8Bit("C:\\Users\\23216\\Desktop\\1.txt"));//string、QString::fromStdString(a)组合,试着去除怪异字符
string a ="C:\\Users\\23216\\Desktop\\1.txt"
QString::fromStdString(a)
但是这个字符阴魂不散……我各种搜索绝对路径为什么不管用……证实方向错误是致命的,他会让你缘木求鱼。
再再后来索性直接搜索调试时路径上的奇怪字符
\u202a 神奇的控制字符
再后来手敲了一遍……就成了…………
这让我有了信心——一般来说引用绝对路径的函数不会出错,除非路径出错。
这篇关于Qt描述路径Qfile时绝对路径不明错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!