C++ 如何制作LPCWSTR的副本?
复制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=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);