你可以使用什么来将int / float转换为wchar_t *?

时间:2009-12-07 16:05:49

标签: c++

如果你有intfloat,如何在不使用像boost这样的外部库的情况下将其转换为wchar_t*

4 个答案:

答案 0 :(得分:5)

std::wostringstream oss;
int i = 1212;  // or float f = 1212.0f;
oss<<i;        // oss<<f;

std::wstring ws = oss.str();
const wchar_t* cwp = ws.c_str(); // const wchar_t*

std::vector<wchar_t> buf( cwp , cwp + (wc.size() + 1) );
wchar_t* wp = &buf[0];  // wchar_t*

答案 1 :(得分:4)

你不能有意义地施展它:

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

这将编译,但它没有任何意义。它只是重新解释整数值并强制创建一个具有该值的指针。由于您无法访问该地址,因此无意义且无用。

如果您的意思是“转换”,则可能会使用宽字符版本的snprintf(),例如: snwprintf()或类似的。这可能取决于您的平台。

答案 2 :(得分:0)

这不完全是投射,但我怀疑你想要一个字符串表示。 printf - 家庭功能或字符串流可能有所帮助。你为什么要施放它到wchar_t超出我的范围。

答案 3 :(得分:0)

你可以这样做,结合黑客上面的回答

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

唯一需要注意的是确保缓冲区中有足够的空间让sprintf函数起作用,否则会出现溢出并损坏另一个内存区域会导致程序崩溃

希望这有帮助, 最好的祝福, 汤姆。