문제

사용 방법이 궁금했습니다 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 (기본적으로 버퍼링)을 사용해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top