C++

C++ 사용자 입력과 String

윤주승 2025. 3. 18. 15:15
#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;
    cout << "음, " << name1 << "씨, 당신의 이름은 ";
    cout << strlen(name1) << " 자입니다만\n";
    cout << sizeof(name1) << " 바이트 크기의 배열에 저장되었습니다.\n";
    cout <<  "이름이" << name1[0] << "자로 시작하는군요.\n";
    name2[3] = '\0';
    cout << "제 이름의 처음 세 문자는 다음과 같습니다.";
    cout << name2 << endl;

    return 0;
}

먼저 배열 name1과 name2의 크기는 15바이트로 제한했다.

처음보는 함수가 있는데 바로 cin 함수이다. cin 함수는 사용자의 입력을 받는 구조이다.

화살표의 방향을 보면 cout << "안녕하세요" 는 안녕하세요 를 출력하다. 라는 의미라면 반대부호인 cin은 name1을 입력하세요. 이다.

단, cin함수도 scanf와 같이 화이트스페이스, 즉 공백을 만나면 출력을 끝낸다. (Hello World)를 입력하면 Hello까지만 출력된다.

strlen함수는 문자열의 길이를 확인할 수 있으며, sizeof는 배열의 크기를 구할 수 있다.

name2의 네번째 자리에 널 부호를 넣었기때문에 3글자까지만 출력되고 그 뒤부터는 출력되지 않는다.

공백까지 출력하려면 getline 함수를 사용해야한다. 첫 번째 매개변수는 어떤 변수에 입력할지, 두 번째 매개변수는 최대 크기이다.

cin.getline(name1, Size);

 

C++에서 문자열을 다루는 방법 중 하나인 string은 C스타일로 string 객체를 초기화할 수 있다.

cin을 사용하여 string 객체에 키보드 입력을 저장할 수 있으며, cout을 사용하여 string 객체를 디스플레이할 수 있다.

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

string에서는 배열을 다른 배열에 통째로 대입할 수 있다.

#include <iostream>
#include <cstring>

using namespace std;

int main() {
    
    char char1[20];
    char char2[20] = "Hong";

    string str1;
    string str2 = "gil";

    char1 = char2;
    str1 = str2;

    cout << str2 << endl;

    return 0;
}

char1, char2 배열과 str1, str2 문자열을 선언 및 초기화 하였다.

둘의 차이점은 배열끼리는 대입할 수 없어서 오류가 발생하지만, str2에 해당하는 gil은 str1에 대입할 수 있다.

또한 배열처럼 str1[0]을 출력하면 gil에서 첫번째인 g가 출

력된다.