c ++:stringstream to vector

时间:2011-03-07 23:07:30

标签: c++ vector stringstream

我正在尝试将字符串流中的数据存储到矢量中。我可以成功地这样做但它忽略了字符串中的空格。如何将空格也推入向量?

谢谢!

代码存根:

#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;
}

4 个答案:

答案 0 :(得分:14)

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

vector<unsigned char> vec(line.begin(), line.end());

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

答案 1 :(得分:3)

默认情况下,标准流都跳过空格。如果您希望禁用跳过空格,可以使用noskipws操作符在下一个流提取(>>)操作中明确地执行此操作,如下所示:

stream >> std::noskipws >> var;

答案 2 :(得分:2)

我倾向于建议只使用你真正想要的容器,但你也可以使用操纵器noskipws

有关stringstream和除抽取运算符之外可以使用的其他方法的更多信息,请参阅this

编辑:

为简单起见,请考虑std::copystd::basic_string<unsigned char>

答案 3 :(得分:1)

你想要noskipws操纵者。在提取内容之前说出stream >> std::noskipws;

[编辑添加std::前缀,我愚蠢地省略了。您的代码不需要它,因为它顶部有using namespace std;,但其他人可能选择不这样做。]