"cin"을 사용한 C 입력 스트림 동작
C에서 "cin" 스트림을 사용하여 입력을 읽을 때 어떻게 작동하는지 이해하는 것이 중요합니다. 다양한 데이터 유형과 상호 작용합니다. 기본적으로 "cin"은 한 번에 한 단어씩 읽으므로 문자 배열이나 문자열을 처리할 때 예기치 않은 동작이 발생할 수 있습니다.
제공된 코드 예제에서 "String"의 "input()" 메서드 " 클래스는 "cin >>"를 사용합니다. 입력 문자열을 읽으려면. 그러나 이 명령문은 입력의 후속 단어를 무시하고 단일 단어만 캡처합니다. 결과적으로 입력에 "steve hawking"과 같이 여러 단어가 포함된 경우 첫 번째 단어인 "steve"만 "str" 배열에 저장됩니다.
해결책: getline( ) 전체 라인 읽기
입력의 전체 라인을 문자 배열로 읽으려면 "cin >>" 대신 "getline()" 함수를 사용할 수 있습니다. 다음은 "getline()"을 사용하는 업데이트된 입력 방법입니다.
<code class="c++">void input() { cout << "Enter string :"; cin.getline(str, sizeof str); }
"getline()"은 두 가지 인수, 즉 대상 배열에 대한 포인터와 배열 크기를 사용합니다. 개행 문자가 나타날 때까지 입력을 읽어 전체 입력 줄을 효과적으로 캡처합니다.
추가 고려 사항
문자열 조작을 위해 문자 배열을 사용하면 다음과 같은 결과가 나올 수 있다는 점은 주목할 가치가 있습니다. 번거롭고 오류가 발생하기 쉽습니다. C 표준 라이브러리는 문자열 처리에 대해 보다 강력하고 유형이 안전한 접근 방식을 제공하는 "std::string" 클래스를 제공합니다. 문자 배열을 사용하는 대신 코드를 다음과 같이 다시 작성할 수 있습니다.
<code class="c++">#include <iostream> #include <string> class String { public: std::string str; void input() { cout << "Enter string :"; std::getline(std::cin, str); } void display() { std::cout << str; } };</code>
마지막으로 "iostream.h" 및 "conio.h"와 같은 헤더 파일의 사용은 오래되었습니다. 최신 C 개발에서는 각각 "iostream" 및 "conio"와 같은 헤더 파일을 사용해야 합니다.
위 내용은 `cin`은 C에서 입력을 어떻게 처리하며 전체 줄을 읽는 데 `getline()`이 선호되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!