>  기사  >  백엔드 개발  >  `cin`은 C에서 입력을 어떻게 처리하며 전체 줄을 읽는 데 `getline()`이 선호되는 이유는 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2024-10-30 09:12:27586검색

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

"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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.