如果我想stream_iterator不忽略空格怎么办

How to do if I want stream_iterator not to ignore whitespaces

本文关键字:空格 怎么办 iterator stream 如果      更新时间:2023-10-16

将 cin 绑定到istream_iterator并读取其后,我没有空格:

iter = istream_iterator<char>(std::cin);
istream_iterator<char> iend;
for(int i=0;i<maxBufferSize;++i)
{
    if(iter==iend)
      return STREAMBUFFER_EOF;
    c = *iter;
    buffer += c;
    iter++;
}
if(iter==iend)
  return STREAMBUFFER_EOF;
return STREAMBUFFER_OK;

有没有办法将其配置为不忽略空格?

如果您的目标是从流中读取无格式的字符数据,则可以改用std::istreambuf_iterator,而无需更改流的任何格式标志。

std::istreambuf_iterator<char> iter(std::cin), iend;
for(int i=0;i<maxBufferSize;++i)
...
抱歉,

答案非常简单,在将 cin 绑定到迭代器之前,您必须使用操纵器 noskipws:

std::cin>>noskipws;
iter = istream_iterator<char>(std::cin);

现在它正在工作。