我使用下面的代碼解除了引用數組對象的問題。 我想要做的是將* pstructDocuments的數組元素複製到全局向量中。我知道全局變量不是最好的方法,但爲了測試目的,我想用結構元素填充全局向量。C++中的取消引用結構數組項目
struct DOCUMENTS{
wchar_t* TYPE;
wchar_t* PATH;
}
std::vector<DOCUMENTS> CdeskDocumentsVec
void initDocuments(DOCUMENTS *pstructDocuments, int size){
for (int i = 0; i < size; i++)
{
DOCUMENTS test1 = {};
test1.PATH = pstructDocuments[i].PATH;
test1.TYPE = pstructDocuments[i].TYPE;
CdeskDocumentsVec.push_back(test1);
}
}
我已經測試了一些複製功能,但沒有按預期工作。因此,我希望有人能幫助我找到用於創建所有的數組元素的全局複製解決方案.....
這
DOCUMENTS test1 = {};
test1.PATH = L"PATH_TEXT";
test1.TYPE = L"TYPE_TEXT";
CdeskDocumentsVec.push_back(test1);
作品具有確定和給出的字符串。
這
CdeskDocumentsVec.push_back(pstructDocuments[i]);
不起作用。我認爲這與指針做...
不工作意味着我無法通過矢量進行迭代並訪問存儲在文檔結構的pstructDocuments數組中的字符串...
UPDATE: 當我複製數據
const size_t len = wcslen(pstructDocuments[i].PATH);
test1.PATH = new wchar_t[len + 1];
wcsncpy(test1.PATH, pstructDocuments[i].PATH, len + 1);
似乎工作....
您需要比「未按預期工作」更詳細。你期望什麼?它有什麼不同? – Barmar 2014-09-19 18:51:51
我不認爲你需要'test1',你可以做'.push_back(pStructDocuments [i])'。 – Barmar 2014-09-19 18:52:20
我也想知道你爲什麼這樣做。如果這是我認爲的那樣,你是否考慮過使用C++ 11的新初始化語法,它允許你像一個數組一樣初始化一個向量?也許不需要代碼來做這個副本,這取決於你想要完成什麼。 – 2014-09-19 18:53:41