이 사이트에는 getline
이 작동하지 않는 질문이 몇 가지 있습니다. 버퍼에 지워야 할 개행 문자가 남아 있고, 약 cin.ignore()
으로 추정됩니다. 나는 이것의 많은 변형을 시도했지만 아무 것도 작동하지 않는 것처럼 보입니다. 단순한 콘솔 입력이고 문자열에 공백이있을 수 있기 때문에 cin >> string
은 옵션이 아닙니다.getline (cin, string) not working cin.ignore()
여기 내 코드입니다.
void prompt(std::string * str)
{
cout << "> ";
cin.sync();
cin.get();
cin.ignore(256, '\r');
cin.ignore(256, '\n');
cin.ignore();
cin.ignore();
std::string tmp;
getline(cin, tmp);
cin.sync();
cin.get();
cin.ignore(256, '\r');
cin.ignore(256, '\n');
*str = tmp;
}
나는 알 수 있듯이 모든 것을 시도했습니다. getline(cin,tmp)
위로 계속 건너 뛰고 str
을 빈 문자열로 설정하는 것으로 보입니다. 도와주세요. 시간 내 주셔서 감사합니다.
은 C 태그와 C++ 질문에 태그를하지 마십시오 –
표준 : CIN> (모든'무시()'명령을 제거 시도하고 사용'표준 : :의 getline > std :: ws, tmp); 대신에. '>> std :: ws'는 모든 공백 (줄의 끝을 포함)을 건너 뜁니다. – Galik
오류 검사가 표시되지 않습니다. 'if (! cin) {cout << "뭔가 failbit를 설정합니다." << endl; }' –