我在QString中存储Windows文件的路径时遇到问题。我正在用C++来使用Qt。Qt:QString中的文件路径
QString resourcePath = ":/images/frog.bmp";
if(! QFile::exists(resourcePath))
{
qDebug("*** Error - Resource path not found : %s", resourcePath.data());
}
此代码的结果与此:
*** Error - Resource path not found : :
所以我可以看到,resourcePath.data())只包含 “:”。我认为问题是斜线,所以我试着用“\”来改变“/”,但结果是一样的。
但如果我写:
QString resourcePath = "C:\\Users\\Boris\\Desktop\\Frogger3\\images\\frog.bmp";
一切工作就好了。我错过了什么?是否有一个原因,为什么结肠不能成为QString的第一个标志?我应该如何在与代码相同的文件夹中写入文件路径?
在此先感谢!
随着'%s'格式说明,'qDebug'需要一个空终止ASCII字符串但'QString :: data()'返回一个指向字符串的UTF-16表示的指针。你应该使用'qDebug(“...%s”,resourcePath.toLatin1()。data());'来代替。 – alexisdm
如果将resourcePath设置为完整路径,由于任何原因它们之间不可能发生变化,exists()将接受const引用。正如alexisdm指出的那样,这可能是您的qdebug()行的问题。 (虽然我建议使用'qPrintable(resourcePath)') –