gpt4 book ai didi

c++ - 使用std::vector作为char缓冲区

转载 作者:行者123 更新时间:2023-12-02 09:49:47 26 4
gpt4 key购买 nike

我想将std::vector用作char[]缓冲区。我做了以下事情:

std::vector<char> buffer;
buffer.push_back('2');
buffer.push_back('5');
buffer.push_back('6');
std::cout << buffer.data() << "\n";
buffer.clear();
buffer.push_back('3');
std::cout << buffer.data() << "\n";

我得到的是:
256
356

我想要的是:
256
3

我猜 std::vector::clear()不会修改基础指针。

请给我建议一个解决方案。

最佳答案

您的代码具有未定义的行为;您应该最后添加一个空终止符'\0'(用于std::vector<char>作为c-style string literal的用法)。例如

std::vector<char> buffer;
buffer.push_back('2');
buffer.push_back('5');
buffer.push_back('6');
buffer.push_back('\0');
std::cout << buffer.data() << "\n";

buffer.clear();
buffer.push_back('3');
buffer.push_back('\0');
std::cout << buffer.data() << "\n";

关于c++ - 使用std::vector作为char缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61182509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com