'프로그래밍'에 해당되는 글 41건

< PREV |  1  |  ...  10  |  11  |  12  |  13  |  14  |  NEXT >

C++, 텍스트 UTF-8파일로 저장하기 :: 2007/11/22 14:19

#include <stdio.h> // fopen, fputs 사용하기 위함
 #include <windows.h> // MultiByteToWideChar, WideCharToMultiByte 사용하기 위함

 #define MAXPACKETLEN 999


 // 전반부 생략


 FILE* fOutFile1;    // 파일 출력 스트림

 fOutFile1 = fopen( SavedFileName, "wt" ); // 파일스트림을 염


 // 사용하고자하는 변수 선언
 char*   pPacket_ASCII = new char[MAXPACKETLEN];
 unsigned short* pPacket_UNICODE = new unsigned short[MAXPACKETLEN*2];
 char*   pPacket_UTF8 = new char[MAXPACKETLEN];


 // pPacket_ASCII에 저장하고자 하는 내용 저장 중반부 생략


 // ASCII -> UNICODE
 MultiByteToWideChar( CP_ACP, 0, pPacket_ASCII, -1, pPacket_UNICODE, MAXPACKETLEN );

 // UNICODE -> UTF-8 길이 측정
 int nLen = WideCharToMultiByte( CP_UTF8, 0, pPacket_UNICODE, -1, NULL, 0, NULL, NULL);

 // UNICODE -> UTF-8
 WideCharToMultiByte( CP_UTF8, 0, pPacket_UNICODE, -1, pPacket_UTF8, nLen, NULL, NULL);


 fputs( pPacket_UTF8, fOutFile1 );  // 파일에 출력


 fclose(fOutFile1); // 파일 출력 스트림을 닫음


P.S. ASCII에서 바로 UTF-8로 바꾸지 못함, Unicode로 변경후 UTF-8로 바꾸어야 함, UTF-8은 2Bytes전용이 아니므로 _wfopen을 사용하지 않음, open시 mode는 wb가 아닌 wt로 해야 함

출처 : http://blog.naver.com/wideeyed/80041884392 

이올린에 북마크하기(0) 이올린에 추천하기(0)

2007/11/22 14:19 2007/11/22 14:19
Trackback Address :: http://zemy.net/tc/zemyblue/trackback/21
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret

확장 char형 : wchar_t :: 2007/11/16 10:29

때로는 프로그램이 1바이트(8비트)로 표현할 수 없는 문자 세트를 처리해야 하는 경우도 있다. 예를 들면, 일본어나 중국어, 한국어 문자 세트를 처리해야 하는 경우이다. c++는 이것을 두가지 방법으로 처리한다. 첫째, 확장 문자 세트가 시스템의 기본 문자 세트이면, 컴파일러 개발업체가 char형을 처음부터 2바이트(16비트)또는 그 이상으로 만드는 것이다. 둘째, 기본 문자 세트와 호가장 문자 세트를 동시에 지원 하는 것이다. 즉, 보통의 8비트 char형으로 기본 문자 세트를 나타내고, wchar_t형( wide character type )으로 확장 문자 세트를 나타내는 것이다. wchar_t 형은 시스템에서 사용되는 가장 큰 확장 문자 세트를 나타낼수 있을 만큼의 충분한 비트 폭을 가진 정수형이다. wchar_t형은 기초 데이터형이라고 부르는 정수형과 동일한 크기와 부호 속성을 가진다. 기초데이터형은 시스템에 따라 다른데, 어떤 시스템에서는 unsigned short형일 수 있고, 다른 시스템에서는 int형이 될수있다.

cin과 cout은 입력과 출력 char형 문자의 스트림으로 간주하기 때문에 wchar_t형을 처리 하지 못한다. 최신의 버전의 iostream 헤더 파일을 wchar_t형 문자의 스트림을 처리하기 위해 wcin과 wcout 객체를 제공한다. 그리고 확장 무자 상수나 확장 문자 문자열을 그 앞에 L을 붙여서 나타낸다.

wchar_t bob = L'PB';        // 확장 문자 상수
wchar_t ken[3] = L"tall";   // 확장 문자 문자열

2바이트 wchar_t형을 사용하는 시스템에서, 이코드는 각 문자에 2바이트씩 할당하여 메모리에 저장한다.


출처 : http://blog.naver.com/lovinghc?redirect ··· 22815955 

이올린에 북마크하기(0) 이올린에 추천하기(0)

2007/11/16 10:29 2007/11/16 10:29
Trackback Address :: http://zemy.net/tc/zemyblue/trackback/19
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret
< PREV |  1  |  ...  10  |  11  |  12  |  13  |  14  |  NEXT >