C++ 사용자 입력과 String
#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가 출
력된다.