프로그래밍 언어/C++

[C++] 사용자 입력과 string

새싹 개발자 뚜비 2022. 1. 13. 17:56
728x90

판다코딩 C++ 인강 공부 정리


[ 사용자 입력 ]

#include <iostream>
#include <cstring>  //strlen() 함수를 사용하기 위한 헤더파일

using namespace std;

int main(){
    //사용자 입력
    const int Size = 15;
    char name1[Size];   //비어있는 배열
    char name2[Size] = "C++programing";

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

    return 0;
}

 

cin :사용자가 입력한 것을 변수에 저장하는 함수

cin >> name1;

사용자의 입력을 받아 name1에 저장한다.

 

name2[3] = '\0';
cout << "제 이름의 처음 세 문자는 다음과 같습니다: ";

C++를 출력하기 위해서 4번째의 문자에 null문자를 삽입한 것을 확인할 수 있다.

cout은 문자열을 출력할 때 null문자까지만 출력하기 때문에

배열의 4번째 원소에 명시적으로 null문자를 입력하게 되면 C++까지만 출력을 한다.

 

문제점

white space(공백)을 사용하는 경우 공백 뒤의 글자는 무시하고 공백 이전의 글자만 저장된다.

cin은 enter, space, tap을 만났을 때 문자열이 끝난 것으로 인식한다.

 

#include <iostream>
#include <cstring>  //strlen() 함수를 사용하기 위한 헤더파일

using namespace std;

int main(){
    //사용자 입력
    const int Size = 15;
    char name1[Size];   //비어있는 배열
    char name2[Size] = "C++programing";

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

    return 0;
}

공백을 포함하여서 문자열을 인식하는 방법

get과 get line 

두 개는 동일한 방법으로 동작한다.

 

 

[ string ]

#include <iostream>

using namespace std;

int main(){
    char char1[20];
    char char2[20] = "jaguar";
    string str1;
    string str2 = "panda";
    //char1 = char2; //틀리다
    str1 = str2; // 맞다
    cout << str1 << endl;  //panda
    return 0;
}

C++에서 문자열을 다루는 방법 중 하나인 string

 1. C스타일로 string 객체를 초기화할 수 있다. 

 2. cin을 이용하여 string 객체에 키보드 입력을 저장할 수 있다.

 3. cout을 사용하여 string 객체를 디스플레이할 수 있다.

 4. 배열표기를 사용하여 string 객체에 저장되어 있는 개별적인 문자들에 접근할 수 있다. ↓

 cout << str1[0] << endl;  //p

 

문자열의 단점 : 배열을 다른 배열에 통째로 대입할 수 없다.

하지만 string에서는 가능함!

 

string str1;
string str2 = "panda";

string 사용방법

복합 데이터형인 string을 명시하고 사용하고자 하는 변수명을 명시한 이후에 값을 초기화하지 않거나,

" "쌍따옴표를 통해서 선언하고 싶은 값을 넣는다.

 

char와의 가장 큰 차이점

string은 배열의 사이즈를 지정해주지 않아도 됨.

string은 통째로 다른 배열에 대입할 수 있다.

728x90