본문 바로가기

Programming/C/C++

C++/wide 문자에 대하여

반응형

WASTE TIME


# 뻘짓의 연속
-C 종류의 언어에서 wide문자이고 아닌것에 민감해지는 중요한 경험이였다. 더하여 기본 char형을 지원하는 함수가 있다면 wchar를 지원하는 함수는 반드시 대칭적으로 존재한다는 것도 깨달았다.

# w가 붙는다면
-wstring, wchar_t , wofstream, wout 등등 wide문자를 사용해야한다면 그에 대한 모든 행동은 다 w종류로 통일 시켜야한다.  그렇게 안하면 엄청난 시간 소모와 고통을 겪는다. (^^7)
-예시로 wstring을 string을 출력하는 cout으로 출력하려고 하면, 확장된 문자 셋에 적용 받는 한글이나 기타 언어들은 출력이 되지 않는 것을 볼 수 있다. 아래 예제는 다행히 컴파일 단에서 오류를 확인해 수정이 가능하지만 ofstream으로 파일을 출력할 경우 파일은 생기지만 그안에 아무것도 존재하지 않거나 이상한 문자열이 출력됨을 확인 할 수 있다.

wstring str = L"안녕하세요! .. Hello\n";
std::cout << str << endl;



# wide 문자 한글 설정

-한글을 사용하게 된다면 다음과 같은 설정을 해야한다. 사용하는 목적에 맞게 골라 설정하면 된다.
#include <locale>
std::locale::global(std::locale("kor")); // 전역 설정 
wcout.imbue(std::locale("kor")); // wcout 한글 설정
wcin.imbue(std::locale("kor")); // wcin 한글 설정

wofstream fout;
fout.imbue(std::locale("kor")): // wofstream 한글 설정 등등 wide문자를 사용하는 객체에 locale설정을 함.


반응형