C++에서 <iostream> >>str의 cin과 <string>의 getline(cin, str)을 사용하여 사용자 입력을 읽는 두 가지 방법의 차이점

사용자 입력을 읽는 데는 <iostream>의 cin >> str과 <string>의 getline(cin, str)의 차이점을 사용합니다.

<string>의 getline() 함수 구문은 다음과 같습니다 [ https://cplusplus.com/reference/string/string/getline/ ]:

istream& getline (istream& is, string& str, char delim);

그 중 is는 입력 스트림 객체이고 str은 대상 문자열 객체이며 delim은 구분 기호를 나타내는 선택적 매개 변수입니다(구분 기호, 기본값은 개행 문자 '\n'입니다).

getline() 함수를 사용하면 입력 스트림에서 텍스트 한 줄을 읽고 구분 기호(또는 파일 끝)를 만날 때까지 읽은 내용을 대상 문자열 str에 저장합니다. 구분 기호 구분 기호가 지정된 경우 getline() 함수는 이 문자를 발견하면 읽기를 중지하고, 그렇지 않으면 기본값은 개행 문자입니다.

#include <iostream>
#include <string>
using namespace std;

int main() {
  
    string str;
    cout << "请输入名字:";
    getline(cin, str);  //cin >> str;
    
     // 检查字符串是否为空
    if (str.empty()) {
        cout << "The string is empty." << endl;
    } else {
        cout << "The string is not empty." << endl;
    }
    
    return 0;
}

실행 결과:

 특별 참고 사항: C++에서 <iostream>의 cin >> str과 <string>의 getline(cin, str)을 사용하여 사용자 입력을 읽는 두 가지 다른 방법의 차이점: ☆ 다른
데이터 유형: cin >> str을 사용하여 읽습니다. 문자열 형식의 단일 단어 또는 숫자 데이터(정수, 실수 등)인 반면, getline(cin, str)은 문자열의 전체 행을 읽는 데 사용됩니다.
☆ 구분자: cin >> str을 사용할 때 입력은 공백 문자(예: 공백, 탭, 줄 바꿈)에 의해 서로 다른 문자열로 구분되고 공백이 아닌 첫 번째 문자부터 시작하는 연속 문자 시퀀스가 ​​str에 저장됩니다. 나머지 부분은 입력 대기열에 남아 있습니다. getline(cin, str)은 공백 문자를 포함한 전체 입력 줄을 읽고 개행 문자를 만나기 전에 이를 str에 저장합니다.
☆ 입력 제한 : cin >> str은 공백 문자 앞의 내용만 읽을 수 있기 때문에 공백이 포함된 문자열은 읽을 수 없으며, 한 번에 한 단어나 숫자만 읽을 수 있습니다. 그리고 getline(cin, str)은 공백을 포함하여 전체 줄을 읽을 수 있으므로 여러 단어 또는 전체 텍스트 줄을 읽을 수 있습니다.
☆ 개행 문자 처리: cin >> str은 읽은 후 입력 스트림에 개행 문자를 남겨 두는데, 이는 다음 읽기 작업에 영향을 미칠 수 있습니다. 대조적으로, getline(cin, str)은 후속 읽기 작업에 영향을 미치지 않도록 입력 스트림에서 개행을 제거합니다.
[ 참고 : 공백 문자는 주로 공백, 탭 및 줄 바꿈을 포함하여 텍스트에 눈에 띄는 형태가 없는 문자를 의미합니다. 텍스트 처리에서 서로 다른 역할을 합니다.
공백: 텍스트에서 단어나 문자를 구분하는 눈에 보이는 공간을 나타냅니다. 연속된 여러 공백은 하나의 공백으로 처리됩니다.
탭: 일반적으로 \t로 표시되며 텍스트에서 고정된 너비를 차지하며 텍스트의 내용을 정렬하는 데 자주 사용됩니다.
Newline: 개행을 나타내는 특수 문자로, 운영 체제에 따라 다르게 표시될 수 있습니다. Unix 및 Linux 시스템에서 개행 문자는 \n으로 표시되고 Windows 시스템에서 개행 문자는 캐리지 리턴 문자(Carriage Return)와 \r\n으로 표시되는 개행 문자라는 두 문자로 구성됩니다.
이러한 공백 문자는 입력 및 출력 작업 중에 주의해서 처리해야 합니다. C++에서 공백 문자는 서로 다른 데이터 항목을 구분하는 데 자주 사용되는 반면 개행 문자는 줄의 끝을 표시하는 데 사용됩니다. 사용자 입력을 올바르게 구문 분석 및 처리하고 올바른 형식의 출력을 생성하려면 이러한 문자를 이해하고 올바르게 처리하는 것이 중요합니다. ]

C++에는 두 개의 getline 함수가 있다는 점에 유의 해야 합니다 . 첫 번째 것은 헤더 파일 <istream> https://cplusplus.com/reference/istream/istream/getline/ 에 정의되어 있고, 두 번째 것은 헤더 파일 <string> https://cplusplus.com/reference 에 정의되어 있습니다. /string /string/getline/ .
<istream>의 getline() 함수는 입력 스트림에서 텍스트 한 줄을 읽는 데 사용되는 반면, <string>의 getline() 함수는 문자열에서 텍스트 한 줄을 읽는 데 사용됩니다.

앞서 소개한 것은 <string>에 있는 getline() 함수입니다.

<istream>의 getline() 함수는 아래에 소개되어 있습니다. getline() 함수는 istream 클래스의 멤버 함수로, 입력 스트림(예: cin)에서 텍스트 한 줄을 읽고 이를 std에 저장할 수 있습니다. :문자열 객체. 함수 프로토타입은 다음과 같습니다.

istream& getline(char* s, streamsize n, char delim );

매개변수 설명:

s: 추출된 문자가 c 문자열로 저장되는 문자 배열에 대한 포인터를 나타냅니다.

n: 문자 배열의 최대 길이를 지정합니다.

delim: 줄 구분 기호를 나타내는 선택적 매개 변수입니다. 지정하지 않으면 기본값은 개행 문자('\n')입니다.

<istream>의 getline() 함수는 텍스트 줄을 읽고 이를 문자 배열에 저장하는 데 사용됩니다.

예를 들어:

#include <iostream>   
using namespace std;
 
int main()
{
	char name[256];
	cout << "Please input your name: ";
	cin.getline(name, 256); // 从标准输入读取一行文本
	cout << "The result is:  " << name << endl;
  
    return 0; 
}

실행하세요:

부록 C++에 있는 두 가지 getline 함수의 사용법은 https://www.jb51.net/article/180289.htm
에서도 확인할 수 있습니다. 

추천

출처blog.csdn.net/cnds123/article/details/132430664