gpt4 book ai didi

c++ - 将字符串流转换为 STL 容器

转载 作者:行者123 更新时间:2023-11-28 01:32:00 24 4
gpt4 key购买 nike

我想将一些字符串流转换为 vector ,但在此过程中我丢失了所有空格。

class Wrapper {
public:
vector<char> data;
Wrapper(std::stringstream &s) {
std::cout << s.str(); //output: 22 serialization::archive 16 0 0 2
for (char c; s >> c;)
data.push_back(c);

std::cout << '\n';
for (auto i = data.begin(); i != data.end(); ++i)
std::cout << *i; // output: 22serialization::archive1600222
}
};

...

new Wrapper(stream);

而且我的对话方式看起来也不优雅。有更好的方法吗?

最佳答案

Some programmer dude 的评论所述, operator>>默认跳过空格。

可以直接构造一个std::vector<char>来自std::stringstream使用适当的重载和几个 std::istreambuf_iterator 小号:

#include <iostream>
#include <vector>
#include <sstream>
#include <iterator>

int main(void)
{
std::stringstream ss;
ss << 22 << " serialization::archive " << 16 << ' ' << 0 << ' ' << 0 << ' ' << 2;

std::vector<char> data {
std::istreambuf_iterator<char>(ss),
std::istreambuf_iterator<char>(), // <- default-constructed end of stream iterator
};

// it outputs: 22 serialization::archive 16 0 0 2
for (auto i = data.begin(); i != data.end(); ++i)
std::cout << *i;
}

关于c++ - 将字符串流转换为 STL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097347/

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