将char缓冲区附加到STL中的vector <char>

jac*_*hab 19 c++ stl vector

将C buffer(char *)的内容附加到结尾的正确(有效)方法是std::vector<char>什么?

xto*_*ofl 37

当您有vector<char>可用时,您可能最好调用该vector<char>::insert方法:

std::vector<char> vec;

const char* values="values";
const char* end = values + strlen( values );

vec.insert( vec.end(), values, end );
Run Code Online (Sandbox Code Playgroud)

将它委托给向量是优选使用a,back_inserter因为向量可以决定它的最终大小.该back_inserterpush_back,可能导致更多的再分配.


Mic*_*ker 5

我认为正确的方法是

vec.insert(vec.end(),buf,buf+length);
Run Code Online (Sandbox Code Playgroud)

要么

std::copy(buf,buf+length,std::back_inserter(vec));
Run Code Online (Sandbox Code Playgroud)

编辑:我重新排序了两个示例,所以不是评论者错了,而是我自己;-)