c++ - STL vector 数据提取

标签 c++ vector stl

我有一个 std::vector<char>大小约为 1500 .但是当我尝试使用 vector::data将数据提取到字符串中,这是行不通的。

std::vector<char> testVector;
//insert data to test vector
std::string temp = testVector.data();

当我打印 temp 时在此之后,它只打印 DATA .当我减小 data 的大小时在 vector到 100-200,它正常工作并且符合预期。但是当尺寸增加时,它会停止工作。我尝试使用 string::reserve , 仍然没有。

我错过了什么?

最佳答案

分配 char*到一个字符串需要一个以 null 结尾的字符串。

复制一个(非空终止)vector<char>进入 string ,使用:

std::string temp(testVector.data(), testVector.size());

或(这更符合惯用语,因为它可以与任何容器一起使用):

std::string temp(testVector.begin(), testVector.end());

关于c++ - STL vector 数据提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244926/

相关文章:

c++ - *临时*排序 vector 的好方法是什么?

c++ - std::vector 在增长时是否调用交换函数?始终还是仅针对某些类型?

c++ - GUID 作为 std::map 键

具有类设计的 C++ OOP

c++ - PugiXML 从递归 xml_tree_walker 中提取数据

c++ - 通用非侵入式缓存包装器

c++ - 对结构 vector 进行排序

c++ - 从 ‘std::wstring {aka std::basic_string<wchar_t>}’ 到非标量类型 ‘UString {aka std::basic_string<char>}’ 的转换

c++ - 访问 tr1/unordered_map 的内在类型哈希函数

c++ - 用作 std::multimap 删除范围的第一个和最后一个的递增迭代器