C++ 如何制作LPCWSTR的副本?

C++ 如何制作LPCWSTR的副本?,c++,c,C++,C,复制LPCWSTR字符串需要采取哪些步骤 考虑这样的情况:LPCWSTR=L“Copy me”使用wcscpy()。以下是MSDN文档: 更安全的变体是wcscpy\u s()。您必须分配一个足够大的缓冲区来预先保存副本: LPCWSTR str = L"Copy me"; std::vector<wchar_t> thecopy( wcslen(str) + 1 ); // add one for null terminator wcscpy_s(thecopy

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

考虑这样的情况:
LPCWSTR=L“Copy me”

使用
wcscpy()
。以下是MSDN文档:

更安全的变体是
wcscpy\u 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();
LPCWSTR str=L“复制我”;
病媒拷贝(wcslen(str)+1);//为空终止符添加一个
wcscpy_s(copy.data()、copy.size()、str);
//可以通过以下方式获取指向副本的指针:
LPCWSTR*strCopy=copy.data();
wcscpy_s()的文档可在此处找到:

使用

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

LPCWSTR
定义为

typedef const WCHAR* LPCWSTR;
LP-指针
C-常数
WSTR-宽字符串


假设
LPCWSTR
等于
const wchar\u t*
,那么对于GNU系统,您可以使用:


该函数也是由
POSIX.1-2008

定义的。这是不完整的,您没有显示如何初始化
szTarget
以指向适合于
wcscpy
调用的内容。这是不完整的,您没有显示如何初始化
szTarget
以指向适合于
wcscpy
调用的内容。这一点很好。在中添加了,并且还提到了wcscpy_s(),这更好。为什么需要复制字符串?当前变量指向一个常量字符串,因此不存在生存期问题。如果需要操作拷贝,在C++中,最好使用一个字符串类来复制。@ Charles Bailey如果我做了代码> LPCWSTR STR2= STR;<代码>它会像原语一样复制吗?好的,你会有一个指针的副本,它将指向相同的固定字符串(不能合法地修改)
LPCWSTR
是一种伪装的指针类型。我不知道你所说的“就像原语一样”是什么意思。@Charles Bailey这句话是指如果我有
intx=20和我做
x2=x。然后,将代码< > x>代码>指定为 X2 > LPCWSTR是否工作相同?是的,虽然在本例中,复制是一个重复的指针,而不是复制的< C++ >代码>。
typedef const WCHAR* LPCWSTR;
wchar_t * wcsdup(const wchar_t * s);