나 개발자 진짜 되냐?

[ C++ 기본 문법 4 ] 문자와 문자열 본문

C++을 시작해봐요!/문법정리를 해보았어요!

[ C++ 기본 문법 4 ] 문자와 문자열

Snow Rabbit 2025. 2. 20. 22:52
반응형

ㅇㅅㅇ

아직까진 데이터 부분이라 그런지

C#과 비슷한 부분이 많다.

 

이번엔 문자와 문자열에 대해 공부해 보자!

 


 

Char

문자 친구

알파벳 / 숫자 / 문자를 나타낸다.

 

문자를 나타내기 위해 우리는

작은따옴표 ' '를 양쪽에 사용한다.

 

비슷한 친구

 

wchar_t가 있다.

유니코드 문자를 나타내는 친구이다.

 

 

char ch = 97;

라고치고

cout << ch << '\n'

 

라고 하면 숫자가 나와야 하는데  문자 a가 나온다.

 

그 이유는 아스키코드로 인식하기 때문!!

 

그래서 진짜 숫자 97을 쓰려면 어떻게 해야 한다?

 

작은따옴표를 써주면 된다. ' 97 '

 

❗❗ char이 1바이트라 너무 큰 숫자는 쓰면 안 된다 ❗❗

 

세상이 점점 좋아지면서

 

전 세계의 통용어

 

char ch2 = 'a' + 1이라면 답이 뭘까?

숫자랑 문자랑 어떻게 더하나 싶을 텐데

아스키코드인 97로 인식해서

97 + 1 = 98

98은 아스키코드로 b이니 b가 출력된다!

 

하지만 아스키코드로는 전 세계 모든 문자를 쓸 수 없어서 생긴 친구가 바로

유니코드이다.

 

 " 전 세계 모든 문자에 대해 유일 코드를 부여한 것 " 

 

유니코드는 두 가지로 분류된다.

 

utf_8과 utf_16이다.

 

8은 알파벳, 숫자는 1바이트고 유럽지역 문자는 2바이트, 한글 한자는 3바이트로 구성되어 있다.

 

16은 모든 것 다 2바이트로 통일 ( C#에서 쓴다 )

wchar_t

라고 쓰면 utf-16을 쓰는 거고

캐스팅하기 위해

wchar_t wch = L'가'

이렇게 문자 앞에 L을 써준다.

 

이렇게 하고 출력해 주면 숫자가 나오게 된다.

cout으로 쓰게 되면 char으로 인식되어서 숫자가 나오는 것이다.

그래서 진짜 문자로 쓰려면

 

cout앞에 w도 써줘야 한다.

w뿐만이 아니다.

wcout.imbue(locale("kor"));

을 써줘서 나 한글 쓸 거야!라고 말해주어야 드디어

'가'를 한국어로 인식하고 출력하면 글자가 나온다.

 

 

문자열

여기서 문자열의 특징은

끝이 NULL이라고 한다. 즉 \0이 들어가야 한다고 한다.

 

char str [] = { 'h', 'e', 'l', 'l', 'o' }라고 치면 데이터 영역에서는 ( 전역 ) 문제없이 잘 나오지만

main 함수 안에다가 넣게 되면 스택영역이기 때문에 잡언어가 나오게 된다.

 

그래서 마지막에 ' \0 '을 넣어주어야 한다.

 

그래서 이렇게 0 써주기 귀찮으니까

0이 자동으로 추가되는 " " 큰 따옴표로 써주는 것이다. 

 

 

반응형