2012-09-19 40 views
1

我正在使用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 
+0

請檢查文件是否已成功打開。 –

+0

使用絕對路徑 - 檢查是否有幫助 – marcinj

+0

添加到您的程序**命令(「cmd/c dir」)** - 輸出應該包括P02.DAT –

回答

0

這聽起來像一個典型的工作目錄的問題。在Visual Studio之外運行時,請確保P02.DAT與您的可執行文件位於同一目錄中。

Visual Studio通常在IDE中執行時將當前工作目錄設置爲解決方案的根目錄。你可能有這樣一個佈局:

  • 構建\ project.sln
  • 構建\ P02.DAT
  • 構建\調試\ project.exe
  • 構建\發佈\ project.exe

在Visual Studio中執行project.exe時,它將設置要構建的工作目錄,允許應用程序訪問P02.DAT。如果你在Visual Studio之外執行project.exe(比如說在一個cmd實例中),它會查看你所在的任何目錄。

相關問題