C++0xでの標準ライブラリを使った文字コード変換 - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
マイページ
メニュー
設定
ログイン
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
311
原発
中国
支援物資
iwj
放射能
放射脳
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
IT・Web
> C++0xでの標準ライブラリを使った文字コード変換
2011/02/21 05:46:24
IT・Web
編集可能
codecvt
cpp
文字コード
utf32
utf16
n3225
utf8
char
cpp0x
文字コード変換
+
C++0xでの標準ライブラリを使った文字コード変換
規格はN3225の22.3.3.2, 22.5 あたりを読むといいです。
N3225
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3225.pdf
by
rshhh
7 fav
1268 view
Fav
7
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
char -> UTF-16 の変換はstd::codecvtでできるっぽい?
返信する
RTする
ふぁぼる
rshhh
2011/02/19 03:13:11
@rshhh
implementation defined のはず
返信する
RTする
ふぁぼる
pepshiso
2011/02/19 03:14:06
@rshhh
少なくとも C++03 の場合は。
返信する
RTする
ふぁぼる
pepshiso
2011/02/19 03:14:34
http://ideone.com/ynXmn
こんなんで通るのか・・・?
返信する
RTする
ふぁぼる
rshhh
2011/02/19 04:21:34
@pepshiso
implementation defined かー。外部のライブラリを使わないで変換したいんですよね。
返信する
RTする
ふぁぼる
rshhh
2011/02/19 04:34:21
basic_ifstreamのコンストラクタには、wchar_tを受け取るものがないのかな。代わりに、openメンバ関数を使えと。
返信する
RTする
ふぁぼる
haroperi
2011/02/21 04:00:32
@haroperi
openでもワイド文字受けないですよ
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:02:40
@pepshiso
確かに探してもないみたいですね。これは、ファイル名はchar *で渡せって事なんでしょうか……
返信する
RTする
ふぁぼる
haroperi
2011/02/21 04:07:15
@haroperi
または、環境依存のファイルIOを使うかですね。ワイド文字使った時点で移植性が崩壊するのでWindowsにしか対応しないと開き直るとかどうでしょう。
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:09:22
@pepshiso
最終的には環境依存になっちゃうんですね。char *をwifstreamのコンストラクタに渡すことにしました。とりあえず上手くいってます。ありがとうございます。ちなみに環境はMacです。別の環境で運用する予定だから、また文字コードで嵌りそうで怖いですけど。
返信する
RTする
ふぁぼる
haroperi
2011/02/21 04:22:04
ワイド文字のエンコーディング実装依存なので……。
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:21:36
C++0x の普及に期待するしか。
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:22:00
@pepshiso
あれ?C++0xだとワイド文字をうまい具合に扱えるような標準ライブラリの規格とかあるんでしたっけ。
返信する
RTする
ふぁぼる
rshhh
2011/02/21 04:23:03
@rshhh
ワイド文字はそのままですけど char16_t とか char32_t とか、utf-* の文字列リテラルとかが入ります。システムのエンコーディングがバラバラなのは変わらないので、銀の弾丸じゃないんですけど。
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:26:34
@pepshiso
ああ・・・!u16string <-> string の相互変換とかって、どうなってるのかご存じないですか?
返信する
RTする
ふぁぼる
rshhh
2011/02/21 04:39:58
@rshhh
うーん、codecvt まわりは詳しくないですが、あまり希望は持ってません。なぜかというと、従来は char のエンコーディングが1種類の実装依存のものであることが、標準のエンコーディング変換関数を使うなら必要なはずです。(続く)
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:49:58
ん、なんか変なこと言ってるな。
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:51:53
@rshhh
えーっと…… n3225 の 22.3.3.2 を読んで教えてください
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 04:53:59
@pepshiso
standard code-conversion facet std::codecvt<Elem, char, std::mbstate_t> を満たす codecvtのオブジェクトをwstring_convertに渡してやれば (つづく)
返信する
RTする
ふぁぼる
rshhh
2011/02/21 05:00:43
@pepshiso
wstring_convert::to_bytes() でワイド文字に対応したマルチバイトのバイト列のシーケンスに変換できるって書いてありますね
返信する
RTする
ふぁぼる
rshhh
2011/02/21 05:01:41
@pepshiso
というか、これはアレだ、std::wstring と std::string (内部ではwchar_t と char )の変換をするための規格じゃないですか? C++0xで入る、char16_t と char との相互変換とはちょっと違う気がする
返信する
RTする
ふぁぼる
rshhh
2011/02/21 05:03:55
いや、22.5にそれらしきものが
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 05:05:35
@pepshiso
あーいや、忘れてください、22.5に Elem is the wide-character type, such as wchar_t, char16_t, or char32_t. ってのがありました。
返信する
RTする
ふぁぼる
rshhh
2011/02/21 05:06:35
codecvt_utf16 とか codecvt_utf8_utf16 かなあ
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 05:07:43
@rshhh
あー、そんな感じでしたね。問題はたぶん2つあって(1)文字列リテラルとかのエンコーディングが実装依存(2)charは実装依存のエンコーディングとUTF-8の2つのエンコーディングを持つと期待されることですね
返信する
RTする
ふぁぼる
pepshiso
2011/02/21 05:04:05
Content from Twitter
残りを読む(19)
ブログへ
iframe版
拡張版
張付けプレビュー
Fav
7
あわせて読みたい
文字コードのデータを文字列に変換するプログラム
「IVSのある環境」をめぐるmoji_memo氏とMnjaMnia氏の会話
#日本語ハッシュタグ で使える文字、使えない文字
第1回神泉セキュリティ勉強会まとめ
C++のGC談義
powered by Preferred Infrastructure
コメント
コメントを入力してください。
Twitterにも投稿する
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
設定を変更する
まとめを作成する
プロフィール
フォローする
まだ自己紹介が設定されていません。
rshhh
twitter
rss
アップデート
まとめ
5
19
C++0xでの標準ライブラリを使った文字コード変換
10
boost::optional<T&>の話
0
「みんなで Boost in 福井」
お気に入り
115
コメント
2
新着のまとめ
#g1983 ユースト1983 No.348 ..
new
生活保護をめぐるクネクネ
new
恥と気高さ
new
楽器が弾ける賃貸ツイート♪ 5月29日版
new
東京都府中市 給食食材検査の検出限界が200ベ..
new
もっと見る
@togetter_jp
最近追加された商品
幸福大熊猫(シンフー・パンダ)S
【ムービー・マスターピース】 『アベンジャーズ』 1/6スケール フィギュア ホークアイ (2次..
マーベル・アベンジャーズ事典 (ShoPro Books)
変節の人―かつての同志が告発する青島幸男の正体
ロストジェネレーションの逆襲 (朝日新書 77)
オススメ
マイスター
トゥギャ通
「個人攻撃はあってはならない」と、全国紙に広告..
up
中核派が北九州瓦礫受け入れ妨害行為への関与を宣言
“北九州、瓦礫焼却による放射能拡散予想図”は「..
黙れ小僧!お前に◯◯学の不幸が癒せるのか
TEDを使ってリーディング・リスニング・ライテ..
頑張れ、米本君!!
もっと見る
茂木健一郎(@kenichiromogi)さん..
new
袁紹の用兵の才能と分かり易い『官渡の戦い』
new
タイバニ当落メールが遅い理由を考えてみた まとめ
new
「女川」ツイートまとめメモ 2012/05/3..
new
#最後にハートをつければ何を言ってもかわいい ..
new
《ごみ処理・糞尿汲み取りの都市問題》
new
もっと見る
第80回「日食写真と昭和格差」
号外「みんなの金環日食まとめ―画像から教養ま..
第79回「虚構新聞とJリーグ」
第78回「コンプガチャとIT系かあちゃん」
第77回「びろーんと自宅警備隊」
第76回「Appleとパンツクッキー」
もっと見る
コメント