연습장
문자와 문자열 본문
주제: 문자와 문자열
bool은 그냥 정수지만, 참/거짓을 나타내기 위해 사용한다 했었다.
사실 char도 마찬가지이다. 그냥 정수지만 '문자'의 의미를 나타내기 위해 사용한다.
<오늘 배울 내용의 핵심적 요약>
char : 알파벳, 숫자, 문자를 나타낸다.
wchar_t : 유니코드 문자를 나타낸다. (_t == _type의 약자)
ASCII코드 (정보교환을 위한 미국표준 코드)
: '문자'의 의미로 작은 따옴표 ' '를 사용한다.
#include <iostream>
using namespace std;
char ch1 = 97;
char ch2 = 'a';
char ch3 = '1';
char ch4 = 'a'+1;
int main(){
cout << ch1 << endl; // 출력값 : a
cout << ch2 << endl; // 출력값 : a
cout << ch3 << endl; // 출력값 : 1
cout << ch3 << endl; // 출력값 : 98
}
유니코드
==> ①국제화 시대에는 영어만으로 서비스 할 수 없음
②전 세계 모든 문자에 대해 유일 코드를 부여한 것이 유니코드
③유니코드에서 가장 많은 번호를 차지하는 게 한국어/중국어~(뚫꿅)
한국의 문자는 많진 않지만 희안한 문자를 만들 수 있다 뚫꿇,, 이 모든 것들이 하나하나의 문자로 등록되어 있기 때문에 유니코드에서 한글이 차지하는 비율이 높다
유니코드는 표기 방식이 여러가지가 있는데 대표적으로 UTF8과 UTF16이 있다.
UTF8 | UTF16 (마이크로소프트, C#) |
알파벳, 숫자는 1바이트로 표현 (아스키코드와 동일한 번호) | 알파벳, 숫자, 한글, 한자 등 거의 대부분 문자는 2바이트 |
유럽 지역의 특수문자는 2바이트 | 매우 예외적인 고대문자만 4바이트 (무시) |
한글, 한자 등 3바이트 |
(두가지가 있다는 것은 참고삼아 알아두셈)
UTF8과 UTF16의 장단점이 크로스된다
UTF8 : 미국에서 사용할 경우 알파벳이나 숫자 1바이트 좋음
but 동아시아 국가에서 서비스할 경우엔 3바이트 표현이 되므로 굉장히 길어질 수 있음
UTF16 : 고정사이즈 2바이트이기에 모든 문자를 표현하기에 용이함
#include <iostream>
using namespace std;
wchar_t wch = L'안';
int main(){
wcout.imbue(locale("kor"));
cout << wch << endl; // 출력값 : 50504 -> 안
}
유니코드를 저장하기 위한 타입 하나 더.
문자 앞에 L 입력은 유니코드라는 것을 알려주기 위해서.
L이라는건 wchar_t 로 캐스팅한다고도 함
wchar_t로 변환이 된다는걸 의미함
wcout.imbue(locale("kor"));
wcout << wch << endl;
문자를 출력하기 위한 출력문
Escape Sequence: 표기하기 애매한 애들을 표현
₩0 | 아스키코드0 | NULL |
₩t | 아스키코드9 | Tab |
₩n | 아스키코드10 | LineFeed (한줄 아래로) |
₩r | 아스키코드13 | CarriageReturn (커서 <<) |
문자열: 문자들이 열을 지어서 모여 있는 것 (문자배열같은 느낌)
정수(1~8바이트)는 고정 길이로 표현한다. but 문자열의 길이는 가변성을 띈다.
문자열의 맨 끝은 NULL(0) 이 들어가있어야 끝으로 인정한다.
#include <iostream>
using namespace std;
char str[] = {'h', 'e', 'l', 'l', 'o'}; //데이터영역이라 문제없음
int main(){
cout << str << endl; // 출력값 : hello
}
#include <iostream>
using namespace std;
int main(){
char str[] = {'h', 'e', 'l', 'l', 'o', '₩0'}; //네트워크통신을 이용해서 문자열을 받을 때 이런 부분 조심
cout << str << endl; // 출력값 : hello
}
#include <iostream>
using namespace std;
char str[] = {'h', 'e', 'l', 'l', 'o'};
char str2[] = "Hello World"; // 마지막에 널값이 같이 있음
int main(){
cout << str << endl; // 출력값 : hello
cout << str2 << endl; // 출력값 : Hello World
}
'언리얼 개발자 > C++' 카테고리의 다른 글
비트 연산과 비트 플래그 (0) | 2022.08.07 |
---|---|
비교 연산과 논리 연산 (0) | 2022.08.01 |
산술 연산(데이터 연산) (0) | 2022.07.31 |
불리언과 실수 (0) | 2022.07.30 |
정수 (0) | 2022.07.30 |