簡體   English   中英

在c ++中克隆一個wchar_t *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM