3

Visual C++ (wchar_t) の Unicode 文字に段階的に移植しているレガシー コードがあります。変換したいこのコードに遭遇しました:

char tmp[256];
sprintf(tmp, "stuff");
throw exception(tmp);

私はそれを次のように変更したいと思います(これにより、例外でコンパイルエラーが発生します):

wchar_t tmp[256];
swprintf(tmp, "stuff");
throw exception(tmp);

これまでのところ、スロー例外に相当する Unicode を提供するドキュメントが見つかりませんでした。誰か助けてもらえますか?

もちろん、「tmp」を char 文字列に変換することもできますが、そうしなければならないのはばかげているようです。

4

1 に答える 1

3

std::exceptionは文字列をサポートしていないため、バッファーを別のバッファーにwchar_t変換するか、最初からバッファーに切り替えずに、そのおよび書式指定子を介して Unicode 入力の書式設定をサポートする必要があります。次に例を示します。wchar_tcharwchar_tsprintf()%S%ls

char tmp[256]; 
sprintf(tmp, "%ls", wchar_t data here); 
throw exception(tmp); 
于 2011-12-08T20:43:57.447 に答える