13

最近、Windows アプリケーションを Linux に移植する際に問題が発生しました。これは、wchar_tこれらのプラットフォーム間のサイズの違いが原因です。コンパイラ スイッチを使用しようとしましたが、これらの文字の出力に問題がありました (GCCwcoutはすべてwchar_t32 ビットであると考えていると思います)。

だから、私の質問:良い方法はあり(w)cout char16_tますか? うまくいかないので、次のようにキャストする必要がありwchar_tます。

cout << (wchar_t) c;

大した問題ではないようですが、気になります。

4

1 に答える 1

3

これを試してください:

#include <locale>
#include <codecvt>
#include <string>
#include <iostream>

int main()
{
    std::wstring_convert<std::codecvt_utf8_utf16<wchar_t> > myconv;
    std::wstring ws(L"Your UTF-16 text");
    std::string bs = myconv.to_bytes(ws);
    std::cout << bs << '\n';
}
于 2011-04-11T02:31:23.027 に答える