연습장

문자와 문자열 본문

언리얼 개발자/C++

문자와 문자열

도다람 2022. 7. 31. 12:43

주제: 문자와 문자열


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
Comments