我必须采取哪些步骤来复制 LPCWSTR 字符串?
考虑以下情况:LPCWSTR str = L"Copy me";
使用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
利用wcscpy
LPWSTR wcscpy(LPWSTR szTarget, LPWCSTR szSource);
目标是非常量宽字符串 (LPWSTR),源是常量宽字符串。
LPCWSTR
定义为
typedef const WCHAR* LPCWSTR;
LP - 指针
C - 常量
WSTR - 宽字符串
假设LPCWSTR
对于const wchar_t *
GNU 系统,您可以使用wcsdup()
:
wchar_t * wcsdup(const wchar_t * s);
该函数也由 定义POSIX.1-2008
。