我想要con-cat CString和下面的代码:
CString ConcateString(CString cstr, ...)
{
CString cstringFinal;
va_list argList;
va_start(argList, cstr);
CString str = cstr;
while (str != argList)
{
cstringFinal += va_arg(argList, CString);
}
va_end(argList);
return cstringFinal;
}
但它不起作用。
我尝试用ConcateString测试它(L" ja",L" ck",L" te",L" st");我有例外。
你可以帮我解决这个问题吗?答案 0 :(得分:0)
它有点隐藏,因为调用没有正确编码为代码,但问题是与C ++对象混合使用vararg函数。
当你这样做时
Invoke-Command -ComputerName "ServerName" -Credential $(Get-Credential) -ScriptBlock {
Get-PSDrive -PSProvider FileSystem
}
编译器 不 将字符串转换为ConcateString(L"ja", L"ck", L"te", L"st")
个对象。相反,你拥有的是CString
的“列表”。您需要将指针作为指针获取,而不是wchar_t*
个对象:
CString
由于您使用VS2015,它应该能够处理template parameter packs,这意味着您可以执行类似
的操作cstringFinal += va_arg(argList, wchar_t*);