如何制作LPCWSTR的副本?

时间:2013-11-11 06:55:38

标签: c++ c

复制LPCWSTR字符串需要采取哪些步骤?

考虑案例:LPCWSTR str = L"Copy me";

3 个答案:

答案 0 :(得分: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()&#39的文档可以在这里找到:

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

答案 1 :(得分:2)

使用wcscpy

LPWSTR wcscpy(LPWSTR szTarget, LPWCSTR szSource);

Target是非常量宽字符串(LPWSTR),source是常量宽字符串。

LPCWSTR定义为

typedef const WCHAR* LPCWSTR;
  

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

答案 2 :(得分:1)

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

wchar_t * wcsdup(const wchar_t * s);

该功能也由POSIX.1-2008定义。