Qt描述路径Qfile时绝对路径不明错误

我日那些看不见的字符!!!
我折腾了2天艹

感谢:\u202a 神奇的控制字符 让我知道了路径不能随便粘贴……

起因是这样的,我想试一下qt的正则表达式截取文件内容,需要QFile取文件路径,结果我习惯性地从文件属性的安全里找对象路径(文件属性->安全->对象名称处复制)
Qt描述路径Qfile时绝对路径不明错误_第1张图片
然后我粘在了一个按钮代码上(正则表达式还没用上呢)

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);
    }
}

结果输出是这样的,
在这里插入图片描述

调试时发现前面总有一传诡异字符,这样路径确实不对了
Qt描述路径Qfile时绝对路径不明错误_第2张图片

后来
我试了路径符号,证实了"\\""/"是一样的,只有“\”是单纯的转义字符不正确。

再后来,我不断地试验函数

//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 神奇的控制字符

再后来手敲了一遍……就成了…………

这让我有了信心——一般来说引用绝对路径的函数不会出错,除非路径出错。

你可能感兴趣的:(错误笔记)