2012-09-19 3 views
1

Visual Studio 2012 Premium을 사용하고 있습니다. 이 코드가 정상적으로 실행될 때 (디버거가 아닌 경우) 유일한 출력은 빈 행입니다. 그러나 디버거에서 실행될 때 출력은 "1 월 9 일 8"입니다. 디버그와 릴리스 간의 전환은 아무런 차이가 없으며 #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

이것은 고전적인 작업 디렉토리 문제처럼 들린다. P02.DAT가 Visual Studio 외부에서 실행할 때 실행 파일과 동일한 디렉터리에 있는지 확인하십시오.

Visual Studio는 일반적으로 IDE 내에서 실행될 때 현재 작업 디렉터리를 솔루션의 루트로 설정합니다.

  • 빌드 \의 project.sln
  • 빌드 \의 P02.DAT
  • 빌드 \ 디버그 \의 project.exe
  • 빌드 \ 릴리스 \의 project.exe
: 당신은 같은 레이아웃을 가질 수있다

Visual Studio에서 project.exe를 실행할 때 응용 프로그램이 P02.DAT에 액세스 할 수 있도록 작업 디렉토리를 설정합니다. Visual Studio 외부에서 project.exe를 실행하면 (cmd 인스턴스에서 말함) 어떤 디렉토리에 있는지 살펴볼 것입니다.

관련 문제