Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将整数添加到LPWSTR_C++_Function_Unicode_Int_Concatenation - Fatal编程技术网

C++ 如何将整数添加到LPWSTR

C++ 如何将整数添加到LPWSTR,c++,function,unicode,int,concatenation,C++,Function,Unicode,Int,Concatenation,我有一个只接受一个LPWSTR作为参数的函数。但是,我需要在它的末尾添加整数 下面是一个伪代码示例: int theNumber = 5; LPWSTR myLPWSTR = L"Number is: "; /* Add theNumber to myLPWSTR */ myFunction(myLPWSTR); 如何做到这一点 我已经尝试将int转换为LPWSTR,然后连接它们,但没有成功。我已经试了一上午了,但就是不知道怎么做 我试过wsprintf、Itou、c_str和几乎所有我知道的

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

下面是一个伪代码示例:

int theNumber = 5;
LPWSTR myLPWSTR = L"Number is: ";
/* Add theNumber to myLPWSTR */
myFunction(myLPWSTR);
如何做到这一点

我已经尝试将
int
转换为
LPWSTR
,然后连接它们,但没有成功。我已经试了一上午了,但就是不知道怎么做

我试过wsprintf、Itou、c_str和几乎所有我知道的东西,但就是做不到,这真的令人沮丧


有人请帮忙。

如果你能使用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() );
std::wstringstream-ss;

ss假设函数真的需要一个
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]);
int-theNumber=5;
std::wostrings;

您可以发布(一些)您尝试过的代码吗?请注意,您不能修改
myLPWSTR
,因为它指向常量数据。如果函数采用
LPWSTR
,则不能修改。您必须使用
&str[0]
,并且不能让它修改隐式null。请注意,此方法仅适用于C++11及更高版本。还要注意的是,
data()
相当于c++11中的
c_str()
。这可能很短,但我得到了一个错误:错误C2664:“myFunction”:无法将参数1从“const wchar_t*”转换为“LPWSTR”。我现在将检查其他建议,谢谢:)您的函数必须采用LPWSTR吗?你不能把它改成LPCWSTR吗?如果没有,请使用Angews版本复制向量中的新字符串并使用该字符串。Visual Studio需要包含哪些标题才能识别“std”?@chris当然,谢谢;编辑。我最初在那里有一个
+1
,然后决定使用
push_back()
并没有更新它。显然,即使在一个8行的例子中,你也能闻到代码的味道。呵呵:)最后一句话中的一个小注释只适用于C++11之前的版本。从C++11开始,它是一个有效的C字符串,最多可修改(不包括隐式null)。C++11之前的版本也可能有不满意的地方。@chris你对C++11的内容有什么引用吗?我所能找到的就是
s[s.size()]
引用了一个
NUL
,而
&*(s.begin()+n)==&*s.begin()+n
适用于
0,这是隐式的空值和连续性,但你可能会发现我的相关内容很有帮助。@chris谢谢,我想我现在明白了。我只是被这样一个事实弄糊涂了:它(明确地)不需要
&*(s.begin()+s.size())==&*s.begin()+s.size()
来保持。