사자자리
[C++] 배열 / 문자열(char, string) 본문
복합 데이터형
- 기본 정수형과 부동소수점형의 조합
배열(Array)
- 같은 데이터형의 집합
배열의 선언
데이터형 배열명[배열의크기];
short month[12]; //month 배열의 원소들은 모두 short형이어야 한다.
배열의 초기화
- 초기화는 선언할 때만 할 수 있다.
- 배열을 부분적으로 초기화하면, 나머지 원소들은 모두 0으로 설정된다.
- 배열을 초기화할 때 대괄호 속을 비워두면, 컴파일러가 초기화 값의 개수를 배열의 크기로 저장한다.
short month[12] = {1, 2, 3};
short credit[] = {1, 2, 3}; //배열의 크기가 자동으로 3이 된다.
배열의 원소를 출력하기: 인덱스
#include <iostream>
using namespace std;
int main() {
short month[12] = { 1, 2, 3 };
cout << month[0] << endl; //인덱스(index): 0부터 시작
cout << month[1] << endl;
cout << month[2] << endl;
return 0;
}
<실행 결과>
1
2
3
문자열 char
#include <iostream>
using namespace std;
int main() {
char hello[5] = { 'H', 'E', 'L', 'L', 'O' };
cout << hello << endl;
return 0;
}
<실행 결과>
HELLO儆儆儆儆儆儆儆儆儆儆儆儆儆儆儆?먢沖
- 문자열을 출력할 때, 어디까지가 문자열인지 알려주는 null 문자(\0)가 있어야 한다.
- null 문자가 없을 경우, 의미 없는 메모리를 돌다가 우연히 null 문자를 만날 때까지 출력을 반복한다.
#include <iostream>
using namespace std;
int main() {
char hello[6] = { 'H', 'E', 'L', 'L', 'O', '\0'}; //null 문자(\0)를 끝에 넣어준다.
cout << hello << endl;
return 0;
}
<실행 결과>
HELLO
#include <iostream>
using namespace std;
int main() {
char hello[] = "HELLO"; //쌍따옴표("")는 명시적으로 NULL 문자(\0)를 포함한다.
cout << hello << endl;
cout << sizeof(hello);
return 0;
}
<실행 결과>
HELLO
6
cin 함수
- Console Input
- 사용자의 입력을 받는 함수
- white space 이전까지 입력받는다.
strlen 함수
- String Length
- 문자열의 길이를 구하는 함수
#include <iostream>
#include <cstring> //strlen 함수
using namespace std;
int main() {
const int size = 20;
char name[size];
cout << "이름을 입력하세요: " << endl;
cin >> name;
cout << "당신의 이름은 " << strlen(name) << "자이지만, "
<< sizeof(name) << " 바이트 크기인 배열에 저장되었습니다." << endl;
return 0;
}
<실행 결과>
이름을 입력하세요:
Regulus
당신의 이름은 7자이지만, 20 바이트 크기인 배열에 저장되었습니다.
cin.getline(str, n);
- (n-1)개의 문자를 str에 저장한다. 마지막은 null 문자.
- white space를 포함해서 입력받는다.
- 크기 n은 생략할 수 있다.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
const int size = 20;
char name[size];
cout << "이름을 입력하세요: " << endl;
cin.getline(name, size);
cout << "당신의 이름은 " << strlen(name) << "자이지만, "
<< sizeof(name) << " 바이트 크기인 배열에 저장되었습니다." << endl;
return 0;
}
<실행 결과>
이름을 입력하세요:
Regulus Arcturus Black
당신의 이름은 19자이지만, 20 바이트 크기인 배열에 저장되었습니다.
문자열 string
- char와 달리, 한 string을 다른 string에 통째로 대입할 수 있다.
- char와 달리, 문자열의 끝에 null 문자가 들어가지 않는다.
- 배열의 크기를 지정하지 않아도 된다. 문자열의 크기가 동적으로 변한다.
- 인덱스를 통해 개별 문자에 접근할 수 있다.
#include <iostream>
using namespace std;
int main() {
string str1;
string str2 = "Black";
str1 = str2;
cout << str1 << endl;
cout << str1[0];
return 0;
}
<실행 결과>
Black
B
'C++ > C++ 이론' 카테고리의 다른 글
[C++] 포인터 / new와 delete 연산자 (0) | 2022.07.16 |
---|---|
[C++] 구조체(struct) / 공용체(union) / 열거체(enum) (0) | 2022.07.16 |
[C++] 데이터형 변환 (0) | 2022.07.13 |
[C++] 변수(정수, 실수, char, bool) / 상수(const) / auto (0) | 2022.07.13 |
[C++] #include <iostream> (0) | 2022.07.13 |
Comments