jma*_*sey 5 c++ debugging file-io visual-studio
这是非常简单的,只是为了让程序运行,所以我可以调试更复杂的部分:
//open file
cout << "Input File Name: ";
string fileName;
cin >> fileName;
ifstream file;
file.open(fileName, ios_base::in);
if (!(file.good())){
cout << "File Open Error\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序编译良好.如果我通过双击或通过cmd浏览来执行来自\ Projects\[this project]\Debug\[program] .exe的调试可执行文件,它将打开文件(存储在同一目录中),其余的该程序很好地哼唱(直到它到达我实际想要调试的有缺陷的部分,无论如何).
但是,如果我尝试从VS2013中"开始调试",则上述操作失败; 它打印错误并立即关闭.程序在调试模式下执行的cmd窗口当然会显示标题区域中的目录,它绝对是同一个目录,但我想它正在寻找其他地方的文件.我尝试将它复制到卷根,没有欢乐.我确信这在VS的早期版本中运行得很好,但也许我只是在这里放大脑.有任何想法吗?
在Visual Studio的项目属性中,您可以设置启动调试程序的当前目录.默认情况下,它设置为.vcxproj文件的位置,即它不是可执行文件的位置.
同时,传递给std文件流构造函数的相对路径相对于程序的当前目录进行解释,这就是为什么在调试时失败但在直接运行时失败的原因.如果您使用这些cmd命令启动程序:
>cd some\random\dir
>C:\path\to\your\Projects\[this project]\Debug\[program].exe
Run Code Online (Sandbox Code Playgroud)
它会以完全相同的方式失败.
要在调试时修改Visual Studio使用的启动目录,请转到Project > Properties > Configuration Properties > Debugging > Working Directory.请注意,该设置是特定于配置的(即,每个配置可以具有不同的启动目录).如果要将其设置为包含可执行文件的目录,则可以使用该宏$(OutDir).
也许最好,您可能希望将数据文件移动到项目源目录中,因为它不是构建工件.
| 归档时间: |
|
| 查看次数: |
5561 次 |
| 最近记录: |