附连字符缓冲区到矢量 在STL(Attaching char buffer to vector

2019-08-04 12:11发布

什么是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_inserterpush_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
标签: c++ stl vector