2017-12-20 17 views
-1

私はLPCTSTRを受け入れ、wstring(ws1)への参照によって値を挿入したベクトルを持っています。問題は、ws1がその値を変更するたびに、以前にベクトルに挿入された値も変更されることです。どのようにベクトルへの挿入後ws1への参照を削除するためのアドバイス?ベクトルへの挿入後にwstringへの参照を削除する

const char* attributeoffile = file->Attribute("Method"); 

vecFileConsolidateParams.push_back(FILECONSOLIDATEPARAMS()); 
size_t size = strlen(attributeoffile)+1; 
std::wstring ws1; 
ws1.resize(size, L'\0'); 
#pragma warning (disable : 4996) 
std::mbstowcs(&ws1[0], attributeoffile, size); 
vecFileConsolidateParams[count].filemethod = &ws1[0] ; 
+0

ベクターに_pointers_を挿入します。したがって、これらのポインタの1つによって指された文字列が変更された場合、あなたは何を期待していますか? –

+0

以前の値を保存したい場合は、参照外のコピーを挿入してください。 –

+1

"LPCTSTRを受け入れるベクトルがあります" - C++でよりよく見られるものを英語では教えないでください。また、我々は 'FILECONSOLIDATEPARAMS'を欠いており、その機能も疑わしいです。 – MSalters

答えて

-1

固定されました。新しい演算子wmemsetとwmemcpyを使用しました。

TCHAR *tc0 = new TCHAR[size0]; 
tc0[size0] = { L'\0' }; 
wmemcpy(tc0, &ws0[0], size0); 
. 
. 
. 
vecFileConsolidateParams[count].filename = tc0; 
delete [] tc0; 
+0

これはひどいようです。 'std :: wstring'やMicrosoftの' CString'を使うだけです。 – Quentin

関連する問題