首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++:stringstream to vector

c++:stringstream to vector
EN

Stack Overflow用户
提问于 2011-03-08 07:07:30
回答 3查看 12.7K关注 0票数 11

我正在尝试将字符串流中的数据存储到向量中。我可以成功地这样做,但它忽略了字符串中的空格。我怎么做才能把空间也推到向量中呢?

谢谢!

代码存根:

代码语言:javascript
复制
#include <iostream>
#include <sstream>
#include <vector>

using namespace std;

int main()
{
    stringstream s;
    string line  = "HELLO HELLO\0";

    stringstream stream(line);

    unsigned char temp;
    vector<unsigned char> vec;
    while(stream >> temp) 
        vec.push_back(temp);


    for (int i = 0; i < vec.size(); i++)
         cout << vec[i];
    cout << endl;
    return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 07:18:20

为什么要使用stringstreamstring复制到vector<unsigned char>?你可以这样做:

代码语言:javascript
复制
vector<unsigned char> vec(line.begin(), line.end());

这将直接进行复制。如果您需要使用stringstream,则需要先使用stream >> noskipws

票数 16
EN

Stack Overflow用户

发布于 2011-03-08 07:15:50

默认情况下,标准流都跳过空格。如果您希望禁用跳过空白,您可以在下一次流提取(>>)操作中显式执行此操作,方法是使用noskipws操纵器,如下所示:

代码语言:javascript
复制
stream >> std::noskipws >> var;
票数 4
EN

Stack Overflow用户

发布于 2011-03-08 07:14:38

我倾向于建议只使用您实际需要的容器,但您也可以使用操纵器noskipws

有关stringstream和除提取运算符之外还可以使用的其他方法的详细信息,请参阅this

编辑:

为了简单起见,还可以考虑std::copystd::basic_string<unsigned char>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5226387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档