如何将整数添加到LPWSTR

时间:2014-01-06 10:05:29

标签: c++ function unicode int concatenation

我有一个函数,只需要一个LPWSTR作为参数。但是,我需要在它的末尾添加整数。

这是一个伪代码示例:

int theNumber = 5;
LPWSTR myLPWSTR = L"Number is: ";
/* Add theNumber to myLPWSTR */
myFunction(myLPWSTR);

怎么做?

我已经尝试将int转换为LPWSTR,然后连接它们但我没有成功。我整个上午都试过这个但是却无法弄清楚如何做到这一点。

我试过例如。 wsprintf,_itow_s,c_str以及我所知道的几乎所有东西 - 但是不能这样做而且它变得非常令人沮丧。

有人请帮忙。

2 个答案:

答案 0 :(得分:1)

假设函数真的需要LPWSTR而不是LPCWSTR(即它可以修改传入的字符串),你必须做这样的事情:

int theNumber = 5;
std::wostringstream s;
s << L"Number is: " << theNumber;
std::wstring str = s.str();
std::vector<wchar_t> buf(str.begin(), str.end());
buf.push_back(0);
myFunctions(&buf[0]);

这是必要的,因为您需要提供wchar_t s的正确终止且可修改的缓冲区。 str.c_str()已终止但不可修改。 &str[0]是可修改的,但不是(保证是)nul-terminated。

答案 1 :(得分:0)

如果您可以使用 C ++ 11

std::wstring str = L"Number is: ";
str += std::to_wstring(42);
myFunction( str.data() );

如果不是:

std::wstringstream ss;
ss << L"Number is: " << 42;
myFunction( ss.str().c_str() );

不要忘记包含字符串 sstream