buf
と を使用して、UTF-16 文字列 ( buffer に配置)を処理しようとしてstd::basic_string
いますistringstream
。std::bad_cast
このコードでは例外が発生します。私のコードに問題はありますか? それとも、gcc の STL はunsigned int
(16 ビット) シンボルを扱えないのでしょうか?
const unsigned short * buf;
// ... fiilling buf
std::basic_string<unsigned short> w(buf);
std::basic_istringstream<unsigned short> iss(w);
unsigned int result;
try { iss >> result; }
catch (std::exception& e)
{
const char * c = e.what();
}
同じコードがstd::wstring
と でstd::wistringstream
正しく動作します。