我正在尝试将字符串流中的数据存储到向量中。我可以成功地这样做,但它忽略了字符串中的空格。我怎么做才能把空间也推到向量中呢?
谢谢!
代码存根:
#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;
}发布于 2011-03-08 07:18:20
为什么要使用stringstream从string复制到vector<unsigned char>?你可以这样做:
vector<unsigned char> vec(line.begin(), line.end());这将直接进行复制。如果您需要使用stringstream,则需要先使用stream >> noskipws。
发布于 2011-03-08 07:15:50
默认情况下,标准流都跳过空格。如果您希望禁用跳过空白,您可以在下一次流提取(>>)操作中显式执行此操作,方法是使用noskipws操纵器,如下所示:
stream >> std::noskipws >> var;发布于 2011-03-08 07:14:38
我倾向于建议只使用您实际需要的容器,但您也可以使用操纵器noskipws
有关stringstream和除提取运算符之外还可以使用的其他方法的详细信息,请参阅this
编辑:
为了简单起见,还可以考虑std::copy或std::basic_string<unsigned char>。
https://stackoverflow.com/questions/5226387
复制相似问题