具有可变数量参数的Concat CString

时间:2017-11-29 07:11:58

标签: c++11

我想要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");我有例外。

你可以帮我解决这个问题吗?

1 个答案:

答案 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*);