[英]clone a wchar_t* in c++
我想將名為szPath的var中保存的路徑克隆到新的wchar_t。
szPath的類型為wchar_t *。 所以我嘗試做類似的事情:
szPathNew = *szPath;
但這指的是記憶中的同一個地方。 我該怎么辦? 我想深深克隆它。
做這個,
wchar_t clone[260];
wcscpy(clone,szPath);
或者,如果你想自己分配內存,
wchar_t *clone = new wchar_t[wcslen(szPath)+1];
wcscpy(clone,szPath);
//use it
delete []clone;
在MSDN上查看: strcpy,wcscpy,_mbscpy
但是,如果你的實現不一定需要原始指針/數組,那么你應該更喜歡這個,
#include<string>
//MOST SAFE!
std:wstring clone(szPath);
不要在C ++中使用原始C字符串。 如果你想要寬字符串,你可以使用std :: wstring:
#include <string>
...
std::wstring szPathClone1 = szPath; // Works as expected
如果您堅持直接使用wchar_t緩沖區,則可以使用wcscpy函數。
PS:您似乎也對指針使用感到困惑,您應該首先了解有關指針的更多信息。
_wcsdup
函數復制(克隆)一個字符串。 請注意,這會分配新內存,因此您需要在以后釋放它:
wchar_t * szPathClone = _wcsdup(szPath);
// ...
free(szPathClone);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.