getline이 입력을 요청하지 않음
코드에서 getline(cin, mystr);을 호출하면 프로그램이 다음 메시지를 표시하지 못합니다. 입력용 사용자입니다. 이는 이전에 cin >> 이름; 그리고 cin>> i;, 사용자가 응답을 입력한 후 입력한 개행 문자가 입력 버퍼에 남아 있습니다.
공백 구분
>> 연산자는 공백으로 구분됩니다. 이는 사용자가 데이터를 입력한 후 Enter 키를 눌렀을 때 개행 문자가 변수에 저장되지 않고 입력 버퍼에 남아 있음을 의미합니다.
getline의 동작
getline도 공백으로 구분됩니다. getline을 호출하면 입력 버퍼에서 개행 문자를 검색합니다. 줄 바꿈 문자가 이미 버퍼에 있으므로 getline은 찾고 있는 내용을 즉시 찾고 사용자에게 입력하라는 메시지를 표시하지 않습니다.
해결책
이 문제를 해결하려면 , 다음 방법 중 하나를 사용할 수 있습니다.
향상된 코드:
다음은 getline만 사용하는 향상된 코드 버전입니다.
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string name; int age; float price; cout << "Hello World!" << endl; cout << "What is your name? "; getline(cin, name); cout << "Hello " << name << endl; cout << "How old are you? "; getline(cin, age); cout << "Wow " << age << endl; cout << "How much is that jacket? "; getline(cin, price); stringstream(price) >> price; cout << price << endl; system("pause"); return 0; }
위 내용은 `cin`을 사용한 후 `getline`에서 입력 메시지를 표시하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!