C++로 뭔가를 하면서 파일을 읽어오는데
파일을 읽는 텍스트 안에 한글이 있을떄 처리하는 과정이 필요했다.
이를 보면서 파일의 인코딩들을 작업하는 내용도 있었는데 그 부분은 나중에 하고
한글같은 경우는 일반적인 string으로 데이터를 처리하지 못할것이다.
한글은 보통 2바이트로 처리해야 할것이고 C++에서는 이런 데이터를 처리하기 위해
wstring 클래스를 사용해야 하고 파일을 읽을때, ifstream이 아닌 wifstream을 이용한다고 한다.
그것을 그대로 사용해보면 아래와 같다.
디버깅해서 wstring에 들어가는 값을 보니... 다 깨져있다...
이를 어떻게 처리해야 할까... 싶다
2가지 방식이 있다.
wstringstream의 imbue 함수를 사용하는 방법과 locale의 global 변수를 사용해 적용하는 방식이 있다.
문제는 global로 적용했을때만 사용할 수 있었는데 다른 방법도 더 확인할 필요가 있다.
https://stackoverflow.com/questions/4775437/read-unicode-utf-8-file-into-wstring
Read Unicode UTF-8 file into wstring
How can I read a Unicode (UTF-8) file into wstring(s) on the Windows platform?
stackoverflow.com
https://trowind.tistory.com/61
C++에서 UTF-8 사용
자바나 파이썬에 비하면 C++의 UTF-8 지원은 미약한 것이 사실이다. 하지만, locale만 잘 설정하면 wstirng, win, wout, wifstream 등을 이용해 UTF-8 데이터를 쉽게 사용할 수 있다. 전체 locale 설정하기 한글(.
trowind.tistory.com
'C , C++, C#' 카테고리의 다른 글
[Cmake] add_custom_target / .cmake file (0) | 2022.05.18 |
---|---|
[Cmake] 헤더 파일 Include 포함시키기 (0) | 2022.03.08 |
[C++] StackWalker64 / 스텍 추적 (0) | 2022.02.13 |
[C/C++] define으로 플랫폼 체크 (0) | 2022.01.13 |
[Cmake] Googletest setting Windows (0) | 2022.01.05 |