在非调试模式下运行代码时出现问题

时间:2012-09-19 23:45:11

标签: c++ visual-studio-2012

我正在使用Visual Studio 2012 Premium。当此代码正常执行(而不是在调试器中)时,唯一的输出是空行。但是当它在调试器中运行时,输出是“1月9日8”。在Debug和Release之间切换没有区别,并且使用#pragma optimize(“”,off)关闭main()函数的优化没有任何作用。我该怎么做才能输出“1月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

1 个答案:

答案 0 :(得分:0)

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

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

  • 建立\ project.sln
  • 建立\ P02.DAT
  • 构建\调试\ project.exe
  • 构建\释放\ project.exe

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