★初心者にVisual C++を教えるスレ★ Part26 at TECH
[2ch|▼Menu]
423:デフォルトの名無しさん
07/07/01 00:04:06
残念ながら、BSTRは例え64bitWindowsでも2^32-1バイトをサポートしていない。
最大は2^29バイトとなるように実装されている。

BSTRは別段UNICODE
(これはM$が勝手に決めたUNICODEであって、本来はいわゆるUTF-16に準拠したもの)を
格納するためではない。その気になればEUCだって代入できる。
現に>>422も単なるバイナリデータとして扱えると言っている。

ところが、少なくともVB6のCComBSTRのメンバ関数は、2バイト文字を扱うように実装されおり、
かつ、null-terminal文字列として扱っている。
BSTRはどんな文字セットでも扱えるとM$は称しているが、実際のところ安全なプログラムを組むには
UTF-16以外は代入しない方がいいと考えていい。

そして、文字列のバイト数は2^29-2であって、文字列は2^28-1文字(最後は`\0')しか代入できない。

ちなみに、Windows95系と互換性を持たせたかったら、4095バイトを限界にした方がいい。
うろ覚えだが、確かメガバイト単位までは実装されてなかったはず。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4776日前に更新/109 KB
担当:undef