2014/04 5

cygwin 의 g++ 로 UTF-8 한글 처리하는 간단한 예제

Cygwin 에서는 printf 와 wprint 를 동시에 사용하는 경우, 컴파일은 성공하지만 실행하면 wprintf 가 제대로 동작하지 않는다. 그리고 wprint 나 swptinf 사용 시 스트링을 출력하기 위해서는 %s 대신 %ls 포맷을 사용해야 한다. Cygwin 의 경우 wchar_t 의 크기는 2바이트이다. C++ 언어에서는 스트링(문자열) 클래스인 string 이 준비되어 있지만, utf-8 스트링을 db위해서는 wstring 을 써야 한다. 또 표준 입출력 cin 과 cout 대신 wcin 과 wcout 을 써야 허며 이를 위해서는 헤더 파일 iostream 을 인클루드(포함)해야 하고 이름 공간 std 를 써야 한다. 또 C 언어 처럼 setlocale(LC_ALL,""); 도 해야 한..

프로그래밍/C++ 2014.04.13

cygwin 의 gcc 로 UTF-8 한글 처리하는 간단한 예제

Cygwin 에서는 printf 와 wprint 를 동시에 사용하는 경우, 컴파일은 성공하지만 실행하면 wprintf 가 제대로 동작하지 않는다. 그리고 wprint 나 swptinf 사용 시 스트링을 출력하기 위해서는 %s 대신 %ls 포맷을 사용해야 한다. Cygwin 의 경우 wchar_t 의 크기는 2바이트이다. #include #include #include #include int main(int argc, const char *argv[]) { wchar_t wt[100]; /// setlocale(LC_ALL,"kr_KR.UTF-8"); setlocale(LC_ALL,""); // printf("sizeof(wchar_t) = %d\n", sizeof(wchar_t)); // printf("..

프로그래밍/C 2014.04.13

cygwin/mingw 의 g++ 로 utf-8 한글 처리하기

다음은 utf-8 인코딩으로 저장한 C++ 소스이다. Cygwin의 g++ tkdyd tl, 만일 아래의 소스에서 std::setlocale(LC_ALL, "ko_KR.UTF-8"); 대신 std::locale::global (std::locale ("ko_KR.UTF-8")); 로 하면 캄핑ㄹ은 되지만 실행 시에 Segmentation fault (core dumped) 에러가 난다. * 소스 파일명: testLocale_003.cpp // Filename: testLocale_003.cpp // // Compile: g++ -std=c++11 -o testLocale_003 testLocale_003.cpp // or g++ -std=c++0x -o testLocale_003 testLocale_00..

프로그래밍/C++ 2014.04.10

cygwin/mingw 의 gcc 로 utf-8 한글 처리하기

우선 다음은 ms949 인코딩으로 저장한 C 소스이다. * 소스 파일명: hello.c #include #include int main() { printf("Hello, 안녕하세요?\n"); printf("strlen(\"Hello, 안녕하세요?\\n\") = %d\n", strlen("Hello, 안녕하세요?\n")); return 0; } * 컴파일 > gcc -o hello hello.c * 실행 > hello Hello, 안녕하세요? strlen("Hello, 안녕하세요?\n") = 19 다음은 utf-8 인코딩으로 저장한 C 소스이다. * 소스 파일명: hello2.c #include #include #include #include #define wstrlen wcslen int main() {..

프로그래밍/C 2014.04.02