iconvライブラリ

iconvで指定できるコード名を調べる

iconv -lで確認する

CPPでiconvを使う

  • ソース

もっときれいに書けそう

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iconv.h>

main()
{
    // iconvを開く
    iconv_t it = iconv_open("UTF-16", "SHIFT_JIS");
    if (it == (iconv_t)-1) {
	perror("iconv_open失敗");
	exit(1);
    }

    // 変換する
    // ★outstrの設定方法が特殊
    // ★出力された長さはoutsizeから引かれる
    char buf[1000], *outstr = buf;
    const char *instr = "こんにちは、世界";
    size_t outsiz = 1000, insiz;
    insiz = strlen(instr);
    size_t siz = iconv(it, &instr, &insiz, &outstr, &outsiz);
    if (siz == -1) {
	perror("iconv_open失敗");
	exit(1);
    }
    fprintf(stderr, "出力された長さ= %d\n", 1000 - outsiz);
    for (int i = 0; i < 1000 - outsiz; i++) printf("%c", buf[i]);

    // iconvを閉じる
    iconv_close(it);
}