我有一个非 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/