2017-12-16 29 views
-1

CodeBlocks의 프로그램에 대한 문자열 출력을 테스트하고 있습니다. 여기에 코드입니다 : 그것은 공간과 cout을 문자열로 delimitered 것처럼CodeBlocks 문자열 출력이 구분 된

#include <iostream> 
    #include <string> 
    using namespace std; 

    int main(){ 

    string entry = ""; 
    while(entry!="x"){ 

     cout<<"Enter: "; 
     cin>>entry; 
     cout<<entry.substr(0,1)<<endl; 

    } 
    return 0; 
} 

그러나이 도청 것처럼 잘못된 순서로 "입력"결과를 출력합니다. 그 이유는 무엇이며 어떻게이 상황을 해결할 수 있습니까?

Output: 

Enter: P q r 
P 
Enter: q 
Enter: r 
Enter: 
+0

는 '>>'연산자는 공백으로 구분 된 일을 추출합니다. 좋은 책 [여기] 목록이 있습니다 (https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). – molbdnilo

+0

스트리밍 된 입력이 정상적으로 작동하는 방식입니다. 대신'getline'을 std :: string에 사용하고 싶을 것입니다. – Eljay

답변

0

전체 줄을 읽으려면 cin >> whatever을 사용하지 마십시오. 공백 (스페이스, 탭 및 개행)이 발생하면 읽기를 중지합니다. std::getline() 사용

getline(cin, entry); 

지금이 사실이된다 :

assert(entry == "P q r");