[英]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
从复制string
到vector<unsigned char>
? 你可以这样做:
vector<unsigned char> vec(line.begin(), line.end());
那将直接进行复制。 如果你需要使用一个stringstream
,你需要使用stream >> noskipws
第一。
默认情况下,标准流都跳过空格。 如果您希望禁用跳过空格,可以使用noskipws操纵器在下一个流提取( >>
)操作中明确地执行此操作,如下所示:
stream >> std::noskipws >> var;
我倾向于建议只使用你真正想要的容器,但你也可以使用操纵器noskipws
有关stringstream和除抽取运算符之外可以使用的其他方法的更多信息,请参阅此内容
编辑:
为简单起见,还要考虑std::copy
或std::basic_string<unsigned char>
。
你想要noskipws
操纵器。 说stream >> std::noskipws;
在拉出它之前。
[编辑添加std::
前缀,我愚蠢地省略了。 您的代码不需要它,因为它using namespace std;
在顶部,但其他人可能选择不这样做。]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.