スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/--(--)--:--

スポンサー広告 | | | [編集]

▲ページトップ

やっぱりwchar_tよりchar

argvを受けてオプション処理したりファイルの入出力したりする部分をwchar_tにしたが、やっぱり止めた。

APIがワイド版なのは変更なしだが、内部処理はUTF-8ですることにしたからである。

Linuxと共用ソースにすることを想定すると、wchar_tではやはり無理がありそう。
そこで、Windowsの場合はwmainでwchar_t **argvを受け、これをUTF-8に変換してstd::stringにいれ、アプリclassのコンストラクタを呼ぶ、ということにした。

具体的には、wmain()内で vector<string> args(argc); という形でメモリを確保し、そこからは、const vector<string> & という参照の形で受け渡す。

ファイル名も同様にwchar_tにしていたが、これもchar*に戻し、UTF-8で保持するようにした。
必要に応じ、直前、例えばDLLクラス内のLoad()関数内などで、UTF-16に変換してAPIを呼ぶようにした。

Linuxで動かす場合、EUC-JPかUTF-8かは定かではないが普通にchar **argvで受け取って、それがなんの問題もなく使えるはずなので、変換せずにそのまま std::string に入れてしまえば、API周り以外はWindowsと殆ど同じ処理で行けることになる。
UTF-8は、とても素晴らしい技術革新である。

現時点で、再び「♥.txt」とか「♨.txt」のような、シフトJISに無い文字を含むファイルを扱うことができることを確認した。

←前

2008/12/09(火)02:23 |Comments(0) |Trackback(0)

C++ | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

テンプレート変更 ホーム DLLクラスとwchar_t
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

05 | 2017/06 | 07
- - - - 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 -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。