2014-01-16 6 views
2

저는 일반적으로 프로그래밍에 대한 상대적 초보자이며이 코드 조각에 문제가 있습니다.C++이 공백을 인식하지 못합니다.

cout << "what would you like to have inside that?" << endl; 
cout << "please enter a sentance" << endl; 
cin.sync(); 
cin >> time[d]; 

cout << "Is this what you wrote?" << endl; 
cout << time[d]<< endl; 

system("pause"); 

공간을 지나치지 않고 출력됩니다.

+1

*** ***을 지나치지 않는 것은 무엇을 의미합니까? –

+1

'getline (std :: cin, time [d])'. '''에 관한 한 공백은 구분 기호입니다. – cHao

+1

무슨 일을하는지 모르는 경우'sync()'를 사용하지 마십시오. 또한 형식화 된 입력은 공백으로 구분됩니다. – 0x499602D2

답변

4

std::cin은 모든 공백 (공백, 줄 바꿈, 탭 등)을 개별 입력 간의 "구분 기호"로 간주합니다. delimeter를 변경할 수있는 방법이 있지만 getline에 의해 제공되는 것이 더 좋을 것입니다. 기본값은 delimeter로 줄 바꿈됩니다 (선택적으로 다른 것을 지정할 수도 있음).

0

std :: getline을 찾고 있다고 생각합니다. std :: cin은 공백을 구분 기호로 취급합니다. 이 시도 대신 입력 time[d]를 취할 cin를 사용하여

#include <iostream> 
#include <vector> 
#include <string> 

int main() 
{ 
    std::vector<std::string> time(1); 
    size_t d = 0; 

    std::cout << "What would you like to have inside of that?" << std::endl; 
    std::cout << "Please enter a sentence: "; 
    std::getline(std::cin, time[d]); 

    std::cout << "Is this what you wrote?" << std::endl; 
    std::cout << "[" << time[d] << "]" << std::endl; 

    return 0; 
} 
0

, getline를 사용해보십시오. 당신은 다음과 같이 코드를 수정할 수 있습니다 - 한계 문자 delim가 발견 될 때까지

cout << "Please enter a sentence: "; 
std::getline(std::cin, time[d], delim); 

는 이제 문자열로 time[d] 걸립니다. 구분 문자는 \t, \n 등이 될 수 있습니다.

구분 문자를 지정하지 않으면 기본 구분 기호로 \n이 필요합니다.

관련 문제