5

我必须采取哪些步骤来复制 LPCWSTR 字符串?

考虑以下情况:LPCWSTR str = L"Copy me";

4

3 回答 3

4

使用wcscpy(). 这是 MSDN 文档:

http://msdn.microsoft.com/en-us/library/kk6xf663(v=vs.90).aspx

一个更安全的变体是wcscpy_s(). 您必须分配一个足够大的缓冲区来预先保存副本:

   LPCWSTR str = L"Copy me";
   std::vector<wchar_t> thecopy( wcslen(str) + 1 ); // add one for null terminator
   wcscpy_s(thecopy.data(), thecopy.size(), str);

   // you can get a pointer to the copy this way:
   LPCWSTR *strCopy = thecopy.data();

wcscpy_s() 的文档可以在这里找到:

http://msdn.microsoft.com/en-us/library/td1esda9(v=vs.90).aspx

于 2013-11-11T06:57:28.383 回答
2

利用wcscpy

LPWSTR wcscpy(LPWSTR szTarget, LPWCSTR szSource);

目标是非常量宽字符串 (LPWSTR),源是常量宽字符串。

LPCWSTR定义为

typedef const WCHAR* LPCWSTR;

LP - 指针
C - 常量
WSTR - 宽字符串

于 2013-11-11T06:57:39.743 回答
1

假设LPCWSTR对于const wchar_t *GNU 系统,您可以使用wcsdup()

wchar_t * wcsdup(const wchar_t * s);

该函数也由 定义POSIX.1-2008

于 2013-11-11T09:07:23.547 回答