タグ

cとunicodeに関するtyruのブックマーク (5)

  • LinuxのC言語で Shift-JIS と UTF-8 の相互変換 - Natural Software

    とりあえず記録 libiconv - GNU Project - Free Software Foundation (FSF) 環境 でびあん GCC 4.3.2 っぽい ダウンロード wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz インストール $ ./configure --prefix=/usr/local $ make $ make install とりあえずやった $ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so libiconv.so.2 が見つかんないとかいいよるので # vi /etc/ld.so.conf /usr/local/lib ← 追加 # ldconfig ← 実行 Apache2.2のコンパイルでapxsエラー(l

    LinuxのC言語で Shift-JIS と UTF-8 の相互変換 - Natural Software
  • 2004-10-27

    うん.なんていうかね.Boost.Serializationのutf8_codecvt_facet.hppとutf8_codecvt_facet.cppの実装を追ってたのよ.(RC枝から引っ張ってきたやつ)いやcoding変換の実装を追うのは楽しかったですよ?何せ実装が極めて素直だから,うにコード超初心者の自分でも教科書さえ手元にあれば「ああ,これはこれね」って感じだったもん. 問題はそこじゃねぇ. このユーティリティ,std::codecvtなる標準のクラスから派生してる.恐らくこのstd::codecvtはただのインターフェース定義.このstd::codecvtから派生したutf8_codecvt_facet_wchat_tをfacetとして突っ込んだlocaleオブジェクト作って(std::codecvtはlocale::facetから派生してる),それでstreamをimbueすれ

    2004-10-27
    tyru
    tyru 2009/06/03
    boostでも使われているワイド文字とそうでない文字の変換の仕組み
  • std::stringとstd::wstringの相互変換 - kryozahiro’s diary

    ポータブルで簡単な方法を探していたら、 http://ml.tietew.jp/cppll/cppll/article/4783 がよさそうだったけど、バグがあったのでいろいろ修正してみた。 #include <cstdlib> #include <string> //ワイド文字列からマルチバイト文字列 //ロケール依存 void narrow(const std::wstring &src, std::string &dest) { char *mbs = new char[src.length() * MB_CUR_MAX + 1]; wcstombs(mbs, src.c_str(), src.length() * MB_CUR_MAX + 1); dest = mbs; delete [] mbs; } //マルチバイト文字列からワイド文字列 //ロケール依存 void widen

    std::stringとstd::wstringの相互変換 - kryozahiro’s diary
    tyru
    tyru 2009/06/03
    「ロケール使うから環境依存なんだけど、どこでもコンパイルが通って、実用上どこでも使えて、かつ簡単な方
  • Paken.NET | TCHAR型のススメ

    C/C++Windowsプログラミングをやり始めたとき、誰もが一度は嫌になるあの謎のデータ型。 "LPCTSTR"なんてのはその典型例です。 しかし、これが何かを知らぬまま放っておいてる、ということが意外とありがちなんですよね。 というわけで、一応簡単に解説しておくことにしよう、と思ったまでです。 ※ 開発環境は、Microsoft Visual C++ 2005 を想定しています。 1.UNICODE 文字コードとはつまり、数値と文字の関係を示したものです。 文字'a'は128で表し、文字'b'は129で表し・・・と文字と数値が一対一で対応して定められています。(数値は適当です) UNICODEも、その文字コードの一種で、古い文字コードのASCIIに比べて新しいものです。 NT系のWindowsには全て対応しているので、現在のほとんどの環境がUNICODE対応となっています。 だったら

  • ワイド文字列の罠

    C++の罠 wchar_tを使うときの罠 日語などのマルチバイト文字列を扱うソフトで、 正規表現などの文字列処理をもっと楽にやりたいという人は、 選択肢の一つとしてワイド文字列の使用を考えることでしょう。 最近では多くのライブラリがワイド文字列とシングルバイト文字列双方に対応し、 C言語も95年の改定でワイド文字列型wchar_tを導入し、 既存のchar型を使用する標準ライブラリはほぼ全てwchar_t版が用意されました。 無論C++も、98年にISOで標準化された際には、 文字列クラスはちゃんとstringとwstringの双方が用意されました。 ところが、実際にwchar_tを使用するとなると、様々な障壁が立ちはだかります。 ここでは、私が陥ったwchar_tに関する「罠」を紹介していきます。 罠その1:Win9xで使えない WinNT系列では、文字列を扱う全てのAPIにchar版

  • 1