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

Visual Studio 2010从命令行运行.exe与运行(f5)调试 我是C++新手,我做了一个非常简单的程序。我的程序所做的就是从主函数调用一个函数,该函数读入文本文件并返回。为了检查我是否正确读取了文件,我正在尝试打印我读取的字符串。当我从VisualStudio(f5)运行时,打印输出(cout)工作正常。但是,当我从命令行运行可执行文件时,函数中的打印输出都不会显示。仅直接在主功能中显示打印输出。我在别处找不到类似的问题。任何帮助都将不胜感激。,c++,visual-studio-2010,cout,C++,Visual Studio 2010,Cout,当您在VC++中运行程序时,当前目录默认设置为项目目录,但应用程序默认位于不同的文件夹中 例如,申请可以是: D:\Work\MyApp\Debug\MyApp.exe 但项目目录可能是: D:\Work\MyApp\MyApp\ 从VC++外部启动程序时,需要采取措施确保当前目录正确,或可执行文件及其引用的任何数据文件位于同一文件夹中。从VC++内部运行程序时,默认情况下,当前目录设置为项目目录,但默认情况下,应用程序位于不同的文件夹中 例如,申请可以是: D:\Work\MyApp\Debu

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

例如,申请可以是:

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

但项目目录可能是:

D:\Work\MyApp\MyApp\


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

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

例如,申请可以是:

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

但项目目录可能是:

D:\Work\MyApp\MyApp\


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

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

如果您正在读取的数据文件位于同一文件夹中,请编写如下代码:

std::ifstream inf("datafile.txt");
将成功,因为当前工作文件夹和数据文件所在的文件夹相同

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

要检验这一点,就必须这样做。请执行以下操作:

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

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

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

    如果您正在读取的数据文件位于同一文件夹中,请编写如下代码:

    std::ifstream inf("datafile.txt");
    
    将成功,因为当前工作文件夹和数据文件所在的文件夹相同

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

    要检验这一点,就必须这样做。请执行以下操作:

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

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

    最有可能的情况是,没有显示输出,因为没有读入字符串,因为文件没有打开,因为当前目录不同。最有可能的情况是,没有显示输出,因为没有读入字符串,因为文件没有打开,因为当前目录不同。