将C缓冲区(char *
)的内容附加到std::vector<char>
末尾的正确(有效)方法是什么?
答案 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));