【问题标题】:Providing relative file path提供相对文件路径
【发布时间】:2011-12-11 11:05:38
【问题描述】:

我的资源文件中有文本文件,我希望能够为该文件提供指向std::ifstream 的路径。 :\file_name.txt..\file_name.txt 都不起作用。

有人知道怎么解决吗?

【问题讨论】:

  • Relative path for fstream 的可能重复项
  • @Als:我不这么认为。 Qt 资源不是文件系统对象,它们在链接时捆绑在可执行文件中。
  • 这个问题与此无关。
  • @user336635:你指的是Qt资源,用qrc编译的吧?
  • @Als 但对是的,类似的问题没有令人满意的答案。如果问题真的能得到正确答案,那就太好了。

标签: c++ qt file-io


【解决方案1】:

Qt 资源文件不是文件系统文件。这些文件作为静态字符数组加载到内存中。您可以自己查看构建目录中的 qrc_*.cpp 文件。如果需要,您可以从那里获取数据,或者您可能想使用 QTextStream 来读取这些数据,使用带有 QFileQIODevice 构造函数。

您没有具体说明您想要做什么,但这是一个读取文件内部内容的示例:

#include <QtCore/QCoreApplication>
#include <QTextStream>
#include <QFile>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QFile file(":/test.txt");
    QTextStream stream(&file);
    if (!file.open(QIODevice::ReadOnly)) {
       qFatal("Failed to open file.");
       return -1;
    }
    QString text = stream.readAll();
    if (text.isNull()) {
       qDebug("Failed to read file.");
       return -1;
    }
    qDebug("File content is: %s. Bye bye.", qPrintable(text));
    return 0;
}

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 2012-03-23
    • 1970-01-01
    • 2013-05-11
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多