본문 바로가기
Software/C++

[C++ 기초] 7. 사용자 입력

by 리미와감자 2023. 3. 10.
728x90
반응형
#include <iostream>
#include <cstring>

using namespace std;

int main() {
    //사용자 입력
    const int Size = 15;
    char name1[Size]; // 비어있는 배열
    char name2[Size] = "C++programing"; // 문자열 상수로 초기화된 배열

    cout << "안녕하세요! 저는 " << name2;
    cout << "입니다! 성함이 어떻게 되시나요?\n";
    //cin >> name1;
    cin.get(name1, Size, 'a');
    cout << "음, " << name1 << "씨, 당신의 이름은 ";
    cout << strlen(name1) << "자입니다만\n";
    cout << sizeof(name1) << "바이트 크기의 배열에 저장되었습니다. \n";
    cout << "이름이 " << name1[0] << "자로 시작하는군요.\n";
    name2[3] = '\0';
    cout << "제 이름의 처음 세 문자는 다음과 같습니다: ";
    cout << name2 << endl;

    return 0;
}

사용자 입력

  • cin : 공백을 문자열의 끝으로 처리함. 결국 공백이 있는 문자열 전부를 인식하지 못함.
  • cin.get(변수 주소, 최대 사이즈, 종결 문자) : 공백을 포함하여 문자열을 받을 수 있음.
  • cin.getline(변수 주소, 최대 사이즈, 종결 문자) : 공백을 포함하여 문자열을 받을 수 있음.

 

cin.get과 cin.getline의 차이

cin.get()  개행문자(\n)를 만나면 문자열에 null문자(\0) 를 입력하고 개행문자는 입력 큐에 남겨두지만, cin.getline()  개행문자를 입력큐에서 지워 버린다.

 

즉, cin.get()은 개행문자를 남겨두기 때문에, cin.get()으로 입력을 받고 한번 더 cin.get() 또는 cin.getline()를 쓰는 경우 두번째 사용자 입력(파란색)은 곧바로 개행문자를 읽어서 종료되게 된다.

 

아래 링크에서 예제를 쉽게 확인할 수 있다. 나중에 기회가되면 예제로 정리할 것이다.

https://stackoverflow.com/questions/26873401/difference-between-cin-get-and-cin-getline

 

difference between cin.get() and cin.getline()

I am new to programming, and I have some questions on get() and getline() functions in C++. My understanding for the two functions: The getline() function reads a whole line, and using the newline

stackoverflow.com

 

 

 

728x90
반응형

댓글