我是c ++的新手,正在编写一个非常简单的程序。我的所有程序都是从main函数调用一个函数,该函数读入一个文本文件并返回。要检查我是否正确读取文件,我正在尝试打印出我读过的字符串。当我从Visual Studio(f5)运行时,打印输出(cout)正常工作。但是,当我从命令行运行可执行文件时,我的函数中没有打印输出显示。仅显示主功能中的打印输出。我在其他地方找不到类似的问题。任何帮助将不胜感激。
答案 0 :(得分:4)
当您从VC ++中运行程序时,默认情况下当前目录设置为项目目录,但默认情况下该应用程序位于不同的文件夹中。
E.g。申请可能是:
D:\Work\MyApp\Debug\MyApp.exe
但项目目录可能是:
D:\Work\MyApp\MyApp\
当您从VC ++外部启动程序时,您需要采取措施确保当前目录正确,或者它所引用的可执行文件和任何数据文件位于同一文件夹中。
答案 1 :(得分:3)
Visual Studio中IDE启动项目的默认工作目录是项目文件夹。这是项目文件所在的文件夹(.vcproj或.vcprojx文件是项目文件)。
如果您正在阅读的数据文件位于同一文件夹中,则代码如下:
std::ifstream inf("datafile.txt");
将成功,因为当前工作文件夹和数据文件所在的文件夹是相同的。
但是,如果切换到可执行文件的编写位置(通常是project-dir / Debug或project-dir / Release文件夹)并从命令shell运行相同的可执行文件,则无法找到数据文件
要测试是这种情况。执行以下操作:
./Debug/YourProgram.exe
。注意:您可以通过让程序将数据文件名称作为argv[]
参数来避免这种情况。然后你的程序将简单地使用你在发布时告诉它的任何文件。