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

时间:2009-09-09 13:23:49

标签: c++ stl vector

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

3 个答案:

答案 0 :(得分: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 );

将它委托给向量是首选使用back_inserter因为向量可以决定它的最终大小。 back_inserter只会push_back,可能会导致更多的重新分配。

答案 1 :(得分:4)

我认为正确的方法是

vec.insert(vec.end(),buf,buf+length);

std::copy(buf,buf+length,std::back_inserter(vec));

编辑:我重新排序了两个例子,因此评论者不是错的,只是我; - )

答案 2 :(得分:1)

我没有编译它,但它应该是这样的:

const char string1[] = "a string";
std::vector<char> vData;
vData.insert(vData.end(), string1, string1+strlen(string1));