"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `cin`은 C++에서 입력을 어떻게 처리하며 전체 줄을 읽는 데 `getline()`이 선호되는 이유는 무엇입니까?

`cin`은 C++에서 입력을 어떻게 처리하며 전체 줄을 읽는 데 `getline()`이 선호되는 이유는 무엇입니까?

2024년 11월 13일에 게시됨
검색:614

How does `cin` handle input in C   and why is `getline()` preferred for reading entire lines?

"cin"을 사용한 C 입력 스트림 동작

C에서 "cin" 스트림을 사용하여 입력을 읽을 때 어떻게 작동하는지 이해하는 것이 중요합니다. 다양한 데이터 유형과 상호 작용합니다. 기본적으로 "cin"은 한 번에 한 단어씩 읽으므로 문자 배열이나 문자열을 처리할 때 예기치 않은 동작이 발생할 수 있습니다.

제공된 코드 예제에서 "String"의 "input()" 메서드는 " 클래스는 "cin >> str;"을 사용합니다. 입력 문자열을 읽으려면. 그러나 이 명령문은 입력의 후속 단어를 무시하고 단일 단어만 캡처합니다. 결과적으로 입력에 "steve hawking"과 같이 여러 단어가 포함된 경우 첫 번째 단어인 "steve"만 "str" ​​배열에 저장됩니다.

해결책: getline( ) 전체 라인 읽기

입력의 전체 라인을 문자 배열로 읽으려면 "cin >>" 대신 "getline()" 함수를 사용할 수 있습니다. 다음은 "getline()"을 사용하는 업데이트된 입력 방법입니다:

void input()
{
    cout 

"getline()"은 두 개의 인수, 즉 대상 배열에 대한 포인터와 배열 크기를 사용합니다. 개행 문자가 나타날 때까지 입력을 읽어 입력의 전체 줄을 효과적으로 캡처합니다.

추가 고려 사항

문자열 조작을 위해 문자 배열을 사용하면 다음과 같은 이점이 있을 수 있다는 점은 주목할 가치가 있습니다. 번거롭고 오류가 발생하기 쉽습니다. C 표준 라이브러리는 문자열 처리에 대해 보다 강력하고 유형이 안전한 접근 방식을 제공하는 "std::string" 클래스를 제공합니다. 문자 배열을 사용하는 대신 코드를 다음과 같이 다시 작성할 수 있습니다.

#include 
#include 

class String
{
public:
    std::string str;

    void input()
    {
        cout 

마지막으로 "iostream.h" 및 "conio.h"와 같은 헤더 파일의 사용은 오래되었습니다. 최신 C 개발에서는 각각 "iostream" 및 "conio"와 같은 헤더 파일을 사용해야 합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3