1

我正在使用 Visual Studio 2012 Premium。当这段代码正常执行时(不在调试器中),唯一的输出是一个空行。但是当它在调试器中运行时,输出是“January 9 8”。在 Debug 和 Release 之间切换没有任何区别,使用 #pragma optimize("", off) 关闭 main() 函数的优化没有任何作用。我该怎么做才能使其输出“January 9 8”?

P02.cpp 包含:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

int main(){

    system("cls");

    string s = "";

    ifstream tt;
    tt.open("P02.DAT");

    getline(tt, s);

    cout << s << endl;

    return 0;
}

P02.DAT 包含:

January 9 8
February 19 17
March 20 23
April 20 15
May 15 16
June 8 7
July 12 9
August 20 18
September 21 27
October 18 17
November 19 24
December 18 17
4

1 回答 1

0

这听起来像是一个经典的工作目录问题。在 Visual Studio 外部运行时,确保 P02.DAT 与可执行文件位于同一目录中。

在 IDE 中执行时,Visual Studio 通常将当前工作目录设置为解决方案的根目录。你可能有这样的布局:

  • 构建\项目.sln
  • 构建\P02.DAT
  • 构建\调试\project.exe
  • 构建\发布\project.exe

在 Visual Studio 中执行 project.exe 时,它​​将设置要构建的工作目录,允许您的应用程序访问 P02.DAT。如果您在 Visual Studio 之外执行 project.exe(例如在 cmd 实例中),它将在您所在的任何目录中查找。

于 2012-09-20T12:45:11.483 回答