什么是C缓冲区(其内容附接的正确的(和有效的)方式char *
)到年底std::vector<char>
?
Answer 1:
当你有一个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
,可能导致更多的再分配。
Answer 2:
我认为正确的方法是
vec.insert(vec.end(),buf,buf+length);
要么
std::copy(buf,buf+length,std::back_inserter(vec));
编辑:我重新排序两个例子,所以它不是评论者都错了,这只是我;-)
Answer 3:
我还没有编译它,但它应该是这样的:
const char string1[] = "a string";
std::vector<char> vData;
vData.insert(vData.end(), string1, string1+strlen(string1));
文章来源: Attaching char buffer to vector in STL