2012-03-15 2 views
0

여기 초보자들도 기다려주십시오. 나는 운동으로 만드는 간단한 교수형 집행자 프로그램에 대한 단어 목록을 사용하는 데 약간의 문제가 있습니다. 나는 텍스트 파일에서 단어 목록을 읽고이 코드를 사용하고 있습니다 : 내가 컴파일하고 직접 실행하지만 개별적으로 실행 파일을 실행하면 다음 그렇지 않은 경우는 잘 작동프로그램을 실행할 때 사용할 파일에 벡터를 쓰려면 어떻게해야합니까? (C++)

vector<string> getWords() 
{ 
    vector<string> text_file; 
    ifstream ifs("my_hangman_words.txt"); 
    string temp; 
    while(getline(ifs, temp)) 
    { 
    text_file.push_back(temp); 
    }; 
    return text_file; 
} 

. 내가 이해하는 것으로부터 벡터에 파일을 쓰고 # 내 프로그램에 파일을 포함시켜야합니다. 누군가가 저에게 그것을 달성하는 방법에 대한 지침을 줄 수 있습니까?

+2

두 개의 다른 디렉토리에서 실행 파일을 실행하고 있으며 현재 디렉토리에서 "my_hangman_words.txt"만 찾습니다. – hmjd

+0

"직접 컴파일 및 실행"및 "개별적으로 실행 파일 실행"이란 무엇을 의미합니까? @ hmjd는 아마도 파일 IO를 검사하는 항상 오류에 대한 올바른 주장을 가지고 있습니다! – John3136

+0

하드 코딩 된 경로를 사용하는 것이 거의 항상 잘못된 것입니다. – user877329

답변

1

#include은 자원이 아닌 코드를 가져 오는 것입니다.

절대 경로가 없기 때문에 (즉, c:/workingpath/file.txt) 직접 실행하면 코드가 올바르게 읽히지 않을 수 있습니다.

디버거에서 실행할 때 command argumentsworking path (Visual Studio 용 링크)을 비롯한 많은 추가 매개 변수를 설정할 수 있습니다. 바이너리를 직접 실행할 때 적용되지 않습니다.

직접 실행하면 어떤 일이 발생하는지 자세히 설명 할 수 있습니다.

+0

고마워요. 정말로 그렇습니다. 전체 경로를 시도했을 때 제대로 작동합니다. 그러나 이것은 분명히 게임에 단어 목록을 포함시키는 올바른 방법이 아닙니까? 이상적으로 플레이어가 솔루션을 볼 수 없도록 목록이 실행 파일에 숨겨져 있어야합니다. 그래서 벡터에 파일을 쓰고 #include를 사용합니다. 최소한 경로를 하드 코딩하는 대신 실행 파일과 같은 디렉토리에있는 텍스트 파일을 가리킬 수 있어야합니다. 또는 나는 무엇인가 놓치고 있냐? 참고 : 저는 Mac에 있습니다. – Dionysis

+0

헤더 파일에 정적 배열로 저장할 수 있지만 리소스 파일을 사용하는 것이 좋습니다. 최악의 경우에는 값을 프로그램에 하드 코딩 할 수 있지만 응용 프로그램 문자열을 보면 쉽게 얻을 수 있습니다. :-) – Konrad

+0

하지만 리소스 파일은 시각적 인 기본 특정 아니야? 내가 Mac을 사용하기 때문에 표준 C++을위한 우아한 솔루션이 아닌가? – Dionysis

관련 문제