繁体   English   中英

c ++:stringstream to vector

[英]c++: stringstream to vector

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

谢谢!

代码存根:

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

你为什么要使用一个stringstream从复制stringvector<unsigned char> 你可以这样做:

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

那将直接进行复制。 如果你需要使用一个stringstream ,你需要使用stream >> noskipws第一。

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

stream >> std::noskipws >> var;

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

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

编辑:

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

你想要noskipws操纵器。 stream >> std::noskipws; 在拉出它之前。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM