我想将存储在 std::vector 中的字符串列表 (ATL::CString) 写入 Windows 注册表中的 REG_MULTI_SZ 值。我知道如何在纯 C 中执行此操作(迭代一次以获得总长度,分配缓冲区,将字符串复制到由“\0”分隔的缓冲区)。
知道我使用 STL 尝试了以下操作(抱歉,我必须将 VS2010 与“for each”一起使用):
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。