我想将名为szPath的var中保存的路径克隆到新的wchar_t.

szPath的类型为wchar_t*.所以我尝试做类似的事情:
szPathNew = *szPath;
Run Code Online (Sandbox Code Playgroud)
但这指的是记忆中的同一个地方.我该怎么办?我想深深克隆它.
做这个,
wchar_t clone[260];
wcscpy(clone,szPath);
Run Code Online (Sandbox Code Playgroud)
或者,如果你想自己分配内存,
wchar_t *clone = new wchar_t[wcslen(szPath)+1];
wcscpy(clone,szPath);
//use it
delete []clone;
Run Code Online (Sandbox Code Playgroud)
在MSDN上查看:strcpy,wcscpy,_mbscpy
但是,如果你的实现不一定需要原始指针/数组,那么你应该更喜欢这个,
#include<string>
//MOST SAFE!
std:wstring clone(szPath);
Run Code Online (Sandbox Code Playgroud)
不要在C++中使用原始C字符串.如果你想要宽字符串,你可以使用std :: wstring:
#include <string>
...
std::wstring szPathClone1 = szPath; // Works as expected
Run Code Online (Sandbox Code Playgroud)
如果您坚持直接使用wchar_t缓冲区,则可以使用wcscpy函数.
PS:您似乎也对指针使用感到困惑,您应该首先了解有关指针的更多信息.
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |