1


0

int / floatをwchar_t *にキャストするには何を使用できますか?

「int」または「float」がある場合、boostなどの外部ライブラリを使用せずに「wchar_t *」にキャストするにはどうすればよいですか?

4 Answer


5


std::wostringstream oss;
int i = 1212;  // or float f = 1212.0f;
oss< buf( cwp , cwp + (wc.size() + 1) );
wchar_t* wp = &buf[0];  // wchar_t*


4


意味のあるキャストはできません。

int x = 43;
wchar_t *ptr = reinterpret_cast(x);

これはコンパイルされますが、意味はありません。 単純に整数値を再解釈し、その値を持つポインターを強制的に作成します。 アドレスにアクセスするために有効なものは何もないので、それは無意味で無意味です。

「変換」を意味する場合、おそらく使用できるsnprintf()のワイド文字バージョンがあります。 `snwprintf()`または同様のもの。 これは、プラットフォームによって多少異なる場合があります。


0


正確にキャストするわけではありませんが、文字列表現が必要だと思われます。 `printf`ファミリの関数または文字列ストリームが役立つ場合があります。 なぜそれを `wchar_t`に_cast_したいのかは私にはわかりません。


0


上記のハッカーの答えと組み合わせて、この方法でそれを行うことができます

int num1 = 25;
float fnum1 = 3.14;
char buf[50];
sprintf(buf, "Int: %d. Float: %4.2f", num1, fnum1);

注意しなければならない唯一のことは、 `sprintf`関数が機能するのに十分なバッファ領域をバッファに確保することです。そうしないと、オーバーフローが発生し、プログラムをクラッシュさせる別のメモリ領域が破損します。

これが役立つことを願っています、よろしく、トム。