将CStringArray的内容复制到std :: vector

Mis*_*tyD 2 c++ mfc stl

正如问题所述,我想将a的内容复制CStringArray到一个std::vector<std::string>.
有什么建议?

xMR*_*MRi 5

因为CStringArray也是在线性数组中分配的,所以不需要循环.只需使用insert函数并定义CStringArray的开始和结束元素!


typedef std::basic_string<TCHAR> tstring;

int _tmain(int argc, TCHAR* argv[])
{
    CStringArray array;
    array.Add(_T("Test1"));
    array.Add(_T("Test2"));
    array.Add(_T("Test3"));
    array.Add(_T("Test4"));

    vector<tstring> vec;
    vec.insert(vec.begin(),&array[0],&array[array.GetSize()-1]+1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,可能在`PCYSTR`构造函数中,它们调用`MultiByteToWideChar()`或`WideCharToMultiByte()`进行转换.但这是一个运行时的浪费,因为它可以在编译时使用简单的`_T("...")装饰完成. (2认同)