문자와 문자열

 

 

인프런 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이 생략되어 있기 때문이다.