続・日本語文字列を1文字ずつ

今度は、std::mapに1文字ずつ格納して自動的にソートさせておき、予めソート済みのデータファイルと1行ずつチェックして該当行を読み出す部分でエラーを発見。
これまた日本語のソート順が環境だったか文字コードだったかに依存して変わっていたため読み込めないデータが出てきてしまった…という単純かつ初歩的なミス。

状況

  • データファイル(CentOS上でPerlのソートを利用)





ウォーザード → ー ウォ ザ ド

  • 入力例(gOS)

ウォーザード → ウォ ザ ド ー

動作

問題なし

  • gOS

長音(“−”)がカナの後ろにソートされるため、データファイルの1行目の“−”に引っ掛からない。後でこのデータを参照しようとしてSegmentation faultになって終了。

対策

移植後にデータファイルをソートし直せば期待通りに。Makefileにでも書いておくかね。