2011-12-08 11 views
0

私はVisual C++(wchar_t)でUnicode文字にインクリメンタルに移植している従来のコードを持っています。私は私が変換したいコードのこのビットが発生しました:wchar_t文字列を使用してVIsual C++で例外をスローする方法はありますか?

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

私はこのような何かにそれを変更したい(これは私の例外にコンパイルエラーを与える):

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

これまで私は例外をスローするためのUnicodeの同等物を私に与える文書を見つけられませんでしたが、誰でも助けてくれますか?

もちろん、私は自分の "tmp"をchar文字列に変換することができますが、それはちょうどそれをする必要があるように思われます。

+0

これは標準のC++ライブラリの問題で、wchar_t *を受け入れるstd :: exceptionコンストラクタがありません。 UnicodeはC++でコールド・ショルダーを取得します。あなたはutf-8に変換するような不気味なことをしなければならないでしょう。 –

+0

私はそれが答えではないことを望んでいた!あなたの助けをありがとう。 –

答えて

1

std::exceptionあなたが持っているいずれかの別々のcharバッファにあなたのwchar_tバッファを変換する、またはその%S%ls経由ユニコード入力のフォーマットをサポートしていsprintf()ようで開始するwchar_tバッファに切り替えていないだろうので、wchar_t文字列をサポートしていません。

char tmp[256]; 
sprintf(tmp, "%ls", wchar_t data here); 
throw exception(tmp); 
+0

ありがとうございます、これは答えのようです! –

関連する問題