【发布时间】:2015-02-14 18:00:51
【问题描述】:
我正在尝试使用StringCchCat 函数:
HRESULT X;
LPWSTR _strOutput = new wchar_t[100];
LPCWSTR Y =L"Sample Text";
X = StringCchCat(_strOutput, 100, Y);
但由于某种原因,我不断收到来自 X 的 “E_INVALIDARG 一个或多个参数无效。” 错误。_strOutput 也充满了一些随机字符。 p>
这实际上是一个更大计划的一部分。所以我想要做的是将“示例文本”连接到空的 _strOutput 变量。这是在一个循环内,所以它会发生多次。对于这个特定示例,就好像我将文本“示例文本”分配给 _strrOutput。
有什么想法吗?
【问题讨论】:
-
您没有初始化
new wchar_t[100]的内容,因此您最终会得到一个充满垃圾的初始字符串(并且可能正在发生缓冲区溢出)。StringCchCat()可以理解地拒绝将任何内容连接到这样的字符串(来自the docs,它认为“目标缓冲区已经满了”)。 -
那么我用空格来初始化它吗?还是别的什么?
-
视情况而定。你希望它是一个空字符串,一个充满空格的字符串,还是别的什么?你到底想达到什么目的?
-
我已经更新了问题。希望它有所帮助,我想要将“示例文本”连接到一个空字符串
-
嗯...为什么?为什么不直接复制字符串而不是连接到空字符串?
标签: c++ winapi c-strings lpcwstr