std::vector に格納されている文字列 (ATL::CString) のリストを、Windows レジストリの REG_MULTI_SZ 値に書き込みたいと考えています。これを単純な C で行う方法を知っています (1 回繰り返して全体の長さを取得し、バッファーを割り当て、文字列を "\0" で区切ってバッファーにコピーします)。
STLを使用して次のことを試したことを知っています(「for each」でVS2010を使用する必要があることを申し訳ありません):
std::vector<TCHAR> multiline_sz;
for each ( CString entry in myStringList )
{
TCHAR* buf = entry.GetBuffer();
multiline_sz.insert(multiline_sz.end(), &buf[0], &buf[entry.GetLength()]);
multiline_sz.push_back(L'\0');
}
multiline_sz.push_back(L'\0');
これは機能しますが、STL を使用してよりエレガントで高速な方法があるかどうか疑問に思います。