> 백엔드 개발 > C++ > C에서 숫자 입력 후 올바른 문자열 입력을 위해 `cin.ignore()`가 중요한 이유는 무엇입니까?

C에서 숫자 입력 후 올바른 문자열 입력을 위해 `cin.ignore()`가 중요한 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-10 18:16:12
원래의
561명이 탐색했습니다.

Why Is `cin.ignore()` Crucial for Correct String Input After Numerical Input in C  ?

C에서 cin.ignore()의 수수께끼 풀기

C 프로그램에서 사용자와 상호작용할 때 문자열 입력 건너뛰기와 같은 예상치 못한 시나리오가 발생할 수 있습니다. 생기다. 겉으로는 무해해 보이는 cin.ignore() 호출이 이러한 난처한 문제를 해결하는 열쇠를 쥐고 있습니다.

cin.ignore()가 중요한 이유

사용자가 숫자를 입력할 때 문자열이 뒤에 오는 경우 Enter 키를 누르면 입력 버퍼에 개행 문자('n')가 삽입됩니다. 이어서 cin>> 숫자; 숫자를 소비하지만 'n' 문자는 버퍼에 남겨둡니다. cin.ignore()가 없으면 cin >> getline(cin, mystr); 실수로 문자열 입력 대신 'n' 문자를 읽습니다.

cin.ignore() 함수는 지정된 수의 문자(예제에서는 256)를 무시하거나 구분 기호(' n'인 경우).

필요성 예측 cin.ignore()

cin.ignore()가 필요할 때를 예측하려면 입력 버퍼에 남은 문자가 있을 가능성을 이해해야 합니다. 필수가 되는 상황은 다음과 같습니다.

  • 숫자를 읽은 후(예: cin >> num;)
  • 다음 입력이 문자열인 경우(예: cin >> getline(cin, mystr);)
  • 입력에 구분자가 아닌 문자가 포함된 경우 의도치 않게 재흡수

예: 코드 탐구

제공된 C 프로그램을 고려하세요.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << endl;
    cin >> num;
    cout << "Your number is: " << num << endl;
    cin.ignore(256, '\n'); // Ignore any remaining characters
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "? \n";
    cout << "Have a nice day. \n";

}
로그인 후 복사

cin.ignore( ) cin >> 이후에 호출합니다. 숫자; 'n' 문자가 무시되어 후속 cin >> getline(cin, mystr); 문자열 입력을 올바르게 읽으려면

위 내용은 C에서 숫자 입력 후 올바른 문자열 입력을 위해 `cin.ignore()`가 중요한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿