2014-07-23 2 views
0

먼저 나쁜 제목에 대해 사과하고 싶습니다. 이제 문제. C++에서 두 개의 문자열을 비교하려고합니다. 나는 string.compare와 ==로 시도했지만, 그들 중 누구도 일하지 않았다. 여기에 프로그램이 제대로 작동 입력 AIvsAI을주는 경우에 C++ string.compare는 공백 문자를 허용하지 않습니다.

if(game_type == "AI vs AI"){ 
    std::cout<<"You choosed AI vs AI\n"; 
    aiVsAI(range); 
} 
else{ 
std::cerr <<"Error"; 
} 

및 string.compare

if(game_type.compare("AI vs AI") == 0){ 
    std::cout<<"You choosed AI vs AI\n"; 
    aiVsAI(range); 
} 
else{ 
    std::cerr <<"Error"; 
} 

와 코드

입니다,하지만 난 (공간) AI, 프로그램의 인쇄 대 AI (공간)을 입력하면 "오류". \ x20 순간의 공간 사용을 시도했지만 이것도 효과가 없었습니다. 왜 이런 일이 일어나고 있는거야?

+0

문자열을 인쇄하십시오. AI가 보일거야. – chris

+4

'game_type'은 어떻게 얻었습니까? 나는 당신이'std :: cin >> game_type'을하고있을 것이라고 확신합니다. 이것은 단지 첫 단어 만 얻습니다. –

+0

@ 그렉, 그렇다고 생각하지 않습니다. 왜냐하면 "AIvsAI"가 작동하지 않기 때문입니다. 하지만'game_type'의 가치가 무엇인지 궁금합니다. – rashmatash

답변

2

당신이 사용자 입력을 얻기 위해

std::cin >> game_type; 

에 유사한 문을 사용하는 것으로 나타납니다. 문제는 >> 연산자가 AI vs AI을 입력 할 때 game_typeAI 만 포함되도록 사용자가 입력하는 줄에서 첫 단어 단어를 추출한다는 것입니다. (. 당신이 다음 줄에 std::cin >> blah를 사용한다면 그 입력 입력이 아직 소비되지 않았기 때문에 측면 참고로, 다음 blahvs 포함됩니다)

이 문제를 해결하려면, 당신은 사용할 수 있습니다 std::getline :

std::getline(std::cin, game_type); 

이것은 사용자가 줄에 입력하는 모든 정보를 가져오고 (입력 키 입력을 포함하지 않음) game_type에 넣습니다. 이것은 대개 대화 형 프로그램에 대한 사용자 입력을 얻는 올바른 방법입니다.

관련 문제