9

次のスニペットがコンパイルされないとします。

std::stringstream ss;
ss << std::wstring(L"abc");

私はこれもそうするとは思わなかった:

std::stringstream ss;
ss << L"abc";

しかし、そうです(少なくともVC ++では)。これは、次のostream::operator<<過負荷が原因であると推測しています。

ostream& operator<< (const void* val );

うっかり文字の種類を混ぜてしまうと、コードが静かに壊れてしまう可能性はありますか?


Pythonでバイト単位のUTF-8文字列のサイズを取得するにはどうすればよいですか

次のようなUTF-8文字列を持つ:

mystring = "işğüı"

Python (2.5) で (メモリ内の) サイズをバイト単位で取得することは可能ですか?

4

2 に答える 2

14

はい-出力が必要wstringstreamですwchar_t

文字列リテラルを使用しないことで、これを軽減できます。あなたが指摘したように、あなたがそれに渡そうconst wstring&としてstringstreamもコンパイルされません。

于 2010-10-01T19:55:16.957 に答える
5

誤って文字タイプを混在させた場合、これは私のコードを黙って壊す可能性がありますか?

一言で言えば:はい、そして私が知っている回避策はありません。文字列の代わりにポインタ値の表現が表示されるだけなので、クラッシュや未定義の動作の可能性はなく、必要な出力ではありません。

于 2010-10-01T19:54:31.600 に答える