c++ - 将非 null 终止的 vector<char> 转换为字符串

标签 c++ string vector constructor constructor-overloading

我有一个非 null 终止的字符 vector ,我如何构造一个新字符串并让它自动插入 \0 到字符串的末尾?

std::vector<char> v;
v.push_back('H');
v.push_back('i');
v.push_back('!');
//v.push_back('\0'); <~ without using this line

std::string a(v.data());
std::string b(v.begin(), v.end()); // same meaning as b(v.data(), v.size())

两者之间正确的构造函数是什么?

最佳答案

std::string a(v.data()); 不正确。构造函数需要一个指向空终止字符序列的指针。不给它一个是未定义的行为。

std::string b(v.begin(), v.end()); 另一方面是完全安全的,会给你一个 std::string 与 vector 内容相同。

关于c++ - 将非 null 终止的 vector<char> 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45491574/

相关文章:

c++ - 在没有加载项的情况下将 Qt 与 Visual Studio 一起使用

c++ - 找不到 Chrome_OmniboxView

c++ - 为模板类重载比较运算符

javascript - 用于传递空格和单引号的正则表达式

c++ - 使用变量索引对 vector 的 vector 进行排序

c++ - 如何根据某个字段在数组中查找元素(无需使用 for 循环扫描整个数组)

Java:将字符串转换为现有的最终对象

c++ - 迭代某个类的 vector 列表 (C++)

JavaScript - 向量 Angular 速度 - 2D

string - 如何在QLabels中显示国际脚本?