如果你有int
或float
,如何在不使用像boost这样的外部库的情况下将其转换为wchar_t*
?
答案 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
函数起作用,否则会出现溢出并损坏另一个内存区域会导致程序崩溃
希望这有帮助, 最好的祝福, 汤姆。