今天在群里遇到的问题 。
我在D:\路径下访问D:\test\a.exe
a.exe调用了它所在路径下的1.txt
而在D:\下直接访问a.exe则提示找不到文件
涉及到了工作路径 和 模块文件路径的问题。
ifstream fin;
fin.open("1.txt");
默认情况下,open调用的是当前工作路径的文件,即调用你所在路径下的文件,而非调用与a.exe同级目录下的1.txt;
所对应的等效目录就是
fin.open("1.txt"); 工作路径\1.txt
而非1.txt真正所在的目录 模块路径\1.txt
模块路径即a.exe所在的路径了。
所以需要绕个弯
ifstream fin;
char dir[100];
string findir;
GetModuleFileName(NULL,dir, 256); //获取模块路径
findir.append(dir);
findir.replace(findir.size()-10,10,"1.txt");
fin.open(findir.c_str());嗯 , 完美搞定,有问题时再说。
本文介绍了一种方法,使a.exe能够成功地从其所在目录调用1.txt,即使从不同路径启动也能正确找到文件。通过获取模块路径并修改字符串来指向正确的文件位置。
249

被折叠的 条评论
为什么被折叠?



