我有一个函数,只需要一个LPWSTR
作为参数。但是,我需要在它的末尾添加整数。
这是一个伪代码示例:
int theNumber = 5;
LPWSTR myLPWSTR = L"Number is: ";
/* Add theNumber to myLPWSTR */
myFunction(myLPWSTR);
怎么做?
我已经尝试将int
转换为LPWSTR
,然后连接它们但我没有成功。我整个上午都试过这个但是却无法弄清楚如何做到这一点。
我试过例如。 wsprintf,_itow_s,c_str以及我所知道的几乎所有东西 - 但是不能这样做而且它变得非常令人沮丧。
有人请帮忙。
答案 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 。