1

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

4

2 回答 2

5

当您从 VC++ 中运行程序时,当前目录默认设置为项目目录,但应用程序默认位于不同的文件夹中。

例如,应用程序可能是:

D:\Work\MyApp\Debug\MyApp.exe

但是项目目录可能是:

D:\Work\MyApp\MyApp\

当您从 VC++ 外部启动程序时,您需要采取措施确保当前目录正确,或者确保可执行文件及其引用的任何数据文件位于同一文件夹中。

于 2013-09-13T20:07:54.213 回答
3

Visual Studio 中 IDE 启动项目的默认工作目录是项目文件夹。这是您的项目文件所在的文件夹(.vcproj 或 .vcprojx 文件是项目文件)。

如果您正在读取的数据文件在同一个文件夹中,则代码如下:

std::ifstream inf("datafile.txt");

将成功,因为当前工作文件夹和数据文件所在的文件夹相同。

但是,如果您切换到可执行文件的写入位置(通常是 project-dir/Debug 或 project-dir/Release 文件夹)并从命令外壳运行相同的可执行文件,则将找不到数据文件。

要测试就是这样。请执行下列操作:

  1. 打开命令提示符。
  2. 切换到数据文件所在的项目文件夹。
  3. 使用指定路径运行可执行文件:./Debug/YourProgram.exe例如。

注意:您可以通过让程序将数据文件名作为argv[]参数来避免这种情况。然后,您的程序将简单地使用您在启动时告诉它的任何文件。

于 2013-09-13T20:10:18.090 回答