2015-02-23 44 views
0

我想读/在build目录修改文件,即:如何处理构建目录中的文件?

std::ifstream file("config.conf"); 

这只要我跑从构建目录里面的程序(./executable) 工作正常,但试图启动时它通过/ home/user中/建设/可执行文件,我得到“段错误”

这不,当我使用的完整目录

std::ifstream file("/home/user/build/config.conf"); 

发生,但我需要它是动态的。

实现这个目标的正确方法是什么? 我正在使用QT Creator,并且在项目中包含这些文件。

+0

这不会解决路径问题,但也许你想使用QSettings的conf文件。 – drescherjm 2015-02-23 13:59:00

回答

1
std::ifstream file(QCoreApplication::applicationDirPath().append("/config.conf")); 
+0

谢谢,这是我想要的。在转换为const char之后工作: 'std :: ifstream file(QCoreApplication :: applicationDirPath()。append(“/ config.conf”).toUtf8()。constData());' – Q5123 2015-02-23 12:27:51

+0

'.toUtf8'不是便携,不幸的是。在Windows上,你需要'.utf16'(注意不同的拼写)。 – MSalters 2015-02-23 12:37:58

+2

使用'QString :: toStdString()'转换为'std :: string'并使用'std :: ifstream'的构造函数来获取一个'std :: string'而不是一个const char数组(不知道是否照顾便携性,但它更短)。 – 2015-02-23 14:58:18

0

正确的,我会说,大多数的Qt批准这样做,这将是你的文件添加到.qrc资源文件和嵌入该文件直接到你的应用程序的方式,那么你就可以从内部访问该应用程序(无论从何处启动可执行文件)只需通过在冒号前加上其路径即可。

更多关于这家在这里:http://qt-project.org/doc/qt-4.8/resources.html

+0

这适用于阅读文件,但是(从我读过的内容来看),在运行时写入资源文件是不可能的。 – Q5123 2015-02-23 12:33:42

相关问题