Into the Horizon

programming, photography, and daily log

c++で日本語の処理(Xcode4.0)

競技プログラミング系の復習を、自分用のwiki上で行うようにしたら完全に放置になりました(´・ω・`)
技術系の記事を書くことにしてみます(レベルの低さが露呈する可能性大)


c++で日本語の処理
驚くことに今までc++で日本語を真面目に処理したことがないことが判明し(pythonでしかやっていなかった…)色々分からないことがあったのでメモ。

以下のようなコードは当然上手くいきません。日本語の文字数をしっかりマルチバイト文字で扱えるようしてやるのが今回の目標です。

string str = "あいうえお";
cout << str[1] << endl;

pythonだとunicode()ってやるだけなんですが、c++だと何やればいいんだろ…
ググってみると、wcharとかその辺が用意されてるよう。ふむふむ…
結局、以下のコードで良い模様。

#include <locale>

setlocale( LC_CTYPE, "ja_JP.UTF-8"); //""でもOK
wstring str = L"あいうえお";
wcout << str[1] << endl;

これで、普通のstring型とほぼ同じように使えるようになるっぽいです。


…のは良かったんですが、実際はXcode上でこのコードは上手くいかず、何がダメなのかわからなくてかなり時間食いました…。コンソール上では上のコードはきちんと動作するので、Xcodeが問題だったよう。
色々調べてみたんですが、何がダメなのかよくわからず…。結局Xcodeを使わない方針をとりました(ダメ人間
判明したら書こうと思います。…そこを書こうと思ってたんですが。ロケール周りが問題なのかな?


■7/8追記
6/29の日記参照。setlocaleがダメらしいです。