[C++] 문자와 문자열
문자와 문자열
인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다.
😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기!
문자
bool은 그냥 정수지만, 참/거짓을 나타내기 위해 사용한다 했었다. 사실 char도 마찬가지이다. 그냥 정수지만 '문자' 의미를 나타내기 위해 사용한다.
- char : 알파벳 / 숫자 문자를 나타낸다.
- wchar_t : 유니코드 문자를 나타낸다.
ASCII (American Standard Code for Information Interchange)
'문자'의 의미로 작은 따옴표 ' 사용
유니코드 (Unicode)
국제화 시대에는 영어만으로 서비스 할 수 없다. 전 세계 모든 문자에 대해 유일 코드를 부여한 것이 유니코드(unicode)
참고) 유니코드에서 가장 많은 번호를 차지하는게 한국어/중국어~ (뚥쿩웱)
유니코드는 표기 방식이 여러가지가 있는데 대표적으로 UTF8, UTF16
- UTF8
- 알파벳, 숫자 1바이트 (ASCIII 동일한 번호)
- 유럽 지역의 문자는 2바이트
- 한글, 한자 등 3바이트 - UTF16
- 알파벳, 숫자, 한글, 한자 등 거의 대부분 문자 2바이트
- 매~~우 예외적인 고대 문자만 4바이트 (사실상 무시해도 됨)
- Microsoft, C#은 UTF16 사용
Escape Sequence
표기하기 애매한 애들을 표현
- \0 = 아스키코드0 = NULL
- \t = 아스키코드9 = Tab
- \n = 아스키코드10 = LineFeed (한줄 아래로)
- \r = 아스키코드13 = CarriageReturn (커서 <<)
- \' = '
문자열
문자열은 정수 (1~8바이트) 고정 길이의 문자들이 열을 지어서 모여 있는 것이다.
문자열의 끝은 NULL (0)이다.
큰따옴표("")를 사용하면 '\0'값이 자동으로 붙는다. 그래서 char를 사용할 때는 주로 큰따옴표를 사용한다.
#include <iostream>
using namespace std;
// char ch = 97; // ASCII code 상 97은 'a'이다
char ch = 'a';
char ch2 = '1';
char ch3 = 'a' + 1; // ASCII code 상 'a'는 97, 'b'는 98, 그래서 결과값이 b로 출력된다.
wchar_t wch = 0xc548; // L'안';
wchar_t str3[] = L"Hi. Welcome to C++ World";
// 문자열
// 문자들이 열을 지어서 모여 있는 것 (문자 배열?)
// 정수 (1~8바이트) 고정 길이로
// 끝은 NULL (0)
// char str[] = { 'h', 'e', 'l', 'l', 'o' };
char str2[] = "Hello World"; //큰따옴표("")를 사용하면 '\0'값이 자동으로 붙는다.
//그래서 char를 사용할 때는 주로 큰따옴표를 사용한다.
int main()
{
cout << ch << endl;
cout << ch2 << endl;
cout << ch3 << endl;
// cout은 char 전용
// wcout은 wchar 전용
wcout.imbue(locale("kor")); //한국어 인식
wcout << wch << endl;
wcout << str3 << endl;
char str[] = { 'h', 'e', 'l', 'l', 'o', '\0' }; // 마지막에 \0을 넣지 않으면 제대로 출력되지 않는다. C언어는 마지막에 NULL(0)으로 끝나게 설정해야 한다.
cout << str << endl;
cout << str2 << endl;
}
부연설명
char str[] = { 'h', 'e', 'l', 'l', 'o' }
// 함수 선언 후 int main()에서 변수를 콜하여 출력하면 문제가 없지만, 위에 함수선언을 하지 않고 int main()에 입력하면 NULL이 없어서 제대로 출력되지 않는다.
char str2[] = "Hello World" // "Hello World" 자리값이 11이 아닌 12인 이유는 NULL이 생략되어 있기 때문이다.
'⭐ Programming > C++' 카테고리의 다른 글
[C++] 비교 연산과 논리 연산 (0) | 2022.03.19 |
---|---|
[C++] 산술연산 (0) | 2022.03.19 |
[C++] Boolean & Floating point 불리언과 부동소수점 (0) | 2022.03.19 |
Pseudo code : Bull Cow Cartridge (0) | 2022.03.10 |
Pre-Increment/Decrement, Post-Increment/Decrement (0) | 2022.03.10 |
댓글
이 글 공유하기
다른 글
-
[C++] 비교 연산과 논리 연산
[C++] 비교 연산과 논리 연산
2022.03.19 -
[C++] 산술연산
[C++] 산술연산
2022.03.19 -
[C++] Boolean & Floating point 불리언과 부동소수점
[C++] Boolean & Floating point 불리언과 부동소수점
2022.03.19 -
Pseudo code : Bull Cow Cartridge
Pseudo code : Bull Cow Cartridge
2022.03.10