2

綺麗にする方法はありますか?Boost の を使おうとするto_upper()と が得られるstd::bad_castので、次のようにして終了しました。

while(str[i]!=u'\0')
{
    str[i]=(char16_t)to_upper((wchar_t)str[i]);
    i++;
}

が元の文字と同じサイズto_upperであることが保証されているかどうかがわからないため、これが正しいかどうかさえわかりません。char16_tそして、それが次の文字の上書きを引き起こすのか、最後の文字の後半を読み直すのかはわかりません。ばかげた質問で申し訳ありませんが、ランダム アクセスと可変長エンコーディングを持つ char 型に関しては問題があります。

4

1 に答える 1

2

それを行う最良の方法は、おそらく次のようなものです。

char16_t upper = std::use_facet<std::ctype<char16_t>>(std::locale()).toupper(ch);
于 2011-06-05T09:32:34.213 に答える