ファイル名 (現在のディレクトリに相対的) の行を含む構成ファイルを使用して、コンソール プログラムを Qt に移植しています。QtCreator で GUI を実行/デバッグすると、作業ディレクトリからファイルをロードできないようです。
私のファイルシステムを次のように仮定します:
C:/MyProjectSource
C:/MyProjectSource-Desktop-Debug // <-- created by QtCreator
C:/MyProjectSource-Desktop-Debug/debug/MyProgram.exe // <- my program
C:/MyProjectSource-Desktop-Debug/debug/params.txt // <- program's config
C:/MyProjectSource-Desktop-Debug/debug/cfg/file1.txt // <- extra file
C:/MyProjectSource-Desktop-Debug/debug/cfg/file2.txt // <- extra file
params.txtは次のようになります
# other setting
...
cfg/file1.txt # at this line, program crash, saying cannot open file
cfg/file2.txt
...
# other setting
file1.txt を読み取るためのコード
std::ifstream ifs(filename); // <-- @runtime, filename = 'cfg/file1.txt'
if (!ifs)
{
// failed inside QtCreator, but fine when start from explorer
EMSG_OPENFILE(filename);
exit(-1);
}
ベースライン: 可能であれば、コンソール プログラムに変更はありません。では、QtCreator に相対パスを理解させるにはどうすればよいでしょうか? または、params.txt内に絶対パスを強制する必要がありますか? ありがとう。
プラットフォーム: QtCreator 2.6.1、Qt4.8、MinGW64、Win 7