Visual Studio 2010从命令行和运行(f5)调试运行.exe

时间:2013-09-13 20:01:51

标签: c++ visual-studio-2010 cout

我是c ++的新手,正在编写一个非常简单的程序。我的所有程序都是从main函数调用一个函数,该函数读入一个文本文件并返回。要检查我是否正确读取文件,我正在尝试打印出我读过的字符串。当我从Visual Studio(f5)运行时,打印输出(cout)正常工作。但是,当我从命令行运行可执行文件时,我的函数中没有打印输出显示。仅显示主功能中的打印输出。我在其他地方找不到类似的问题。任何帮助将不胜感激。

2 个答案:

答案 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运行相同的可执行文件,则无法找到数据文件

要测试是这种情况。执行以下操作:

  1. 打开命令提示符。
  2. 切换到数据文件所在的项目文件夹。
  3. 使用指定的路径运行可执行文件:例如./Debug/YourProgram.exe
  4. 注意:您可以通过让程序将数据文件名称作为argv[]参数来避免这种情况。然后你的程序将简单地使用你在发布时告诉它的任何文件。