C , C++, C#

[C++] 한글이 있는 파일 읽어 저장하기: Euc-kr

vhxpffltm 2022. 2. 22. 22:28

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