C ++ CIN이 반환 캐릭터를 읽는 C ++
문제
사용 방법이 궁금했습니다 cin
사용자가 어떤 값으로 입력하지 않고 단지 밀어내는 경우 ENTER
저것 cin
이것을 유효한 입력으로 인식합니다.
해결책
당신은 아마 시도하고 싶을 것입니다 std::getline
:
#include <iostream>
#include <string>
std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
다른 팁
사용자 입력에 대해 알게됩니다 std::getline
아주 잘 작동합니다.
당신은 그것을 사용하여 줄을 읽고 읽은 내용을 버릴 수 있습니다.
이와 같은 일을하는 데 문제가 있습니다.
// Read a number:
std::cout << "Enter a number:";
std::cin >> my_double;
std::count << "Hit enter to continue:";
std::cin >> throwaway_char;
// Hmmmm, does this work?
사용자가 다른 쓰레기를 입력하면 "4.5-"에 대해 "4.5-"에 대해서는 동기화에서 벗어나 다음 번에 보는 프롬프트를 인쇄하기 전에 사용자가 마지막으로 작성한 내용을 읽는 것이 너무 쉽다는 것입니다.
모든 완전한 줄을 읽으면 std::getline( std::cin, a_string )
그런 다음 반환 된 문자열 (예 : istringstream 또는 기타 기술 사용)을 구문 분석합니다. 인쇄 된 프롬프트를 STD :: CIN의 독서와 동기화하는 것이 훨씬 쉽습니다.
Cin.getline 문제를 해결 하시겠습니까?
정수에 들어가지 않고 Enter 키를 누르는 사용자를 감지하려면 다음과 같습니다.
char c;
int num;
cin.get(c); // get a single character
if (c == 10) return 0; // 10 = ascii linefeed (Enter Key) so exit
else cin.putback(c); // else put the character back
cin >> num; // get user input as expected
대안으로 :
char c;
int num;
c = cin.peek(); // read next character without extracting it
if (c == '\n') return 0; // linefeed (Enter Key) so exit
cin >> num; // get user input as expected
Unfuffering Cin (기본적으로 버퍼링)을 사용해보십시오.
제휴하지 않습니다 StackOverflow