Top > C/C++あれこれ > 文字コード変換ライブラリICUのサンプル(UTF-8→SJIS)です。
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
#include <stdio.h>
#include <string>
#include <fstream>
#include <unicode/unistr.h> // ICU
int main(int argc, char* argv[]){
 
    std::fstream r("utf8_src.txt");    
    std::string  str;    r >> str;    
    
    //一旦Unicodeで文字列オブジェクトを構築して、extractメソッドで	
    //他のマルチバイト文字に変換します。	
    //Unicodeオブジェクト構築 例:"shift_jis"、 "utf8"、 "euc-jp"	
    icu::UnicodeString src(str.c_str(), "utf8");    
    
    //変換後の文字列長を取得	
    int32_t len = src.extract(0, src.length(), NULL, "shift_jis");    
    
    //変換後文字列の格納領域を準備	
    char* result = new char[len + 1];
    
    //文字コード変換	
    src.extract(0, src.length(), result, "shift_jis");     
    
    //変換結果確認	
    printf("[%s]\n", result);    
    
    delete [] result;    
    return 0;
}

リロード   新規 編集 凍結解除 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2012-08-08 (水) 23:25:12 (2597d)