如何从std :: istream中读取(使用operator >>)?

Fra*_*ank 2 c++ operators istream extraction-operator

我如何阅读std::istream使用operator>>

我尝试了以下方法:

void foo(const std::istream& in) {
  std::string tmp;
  while(in >> tmp) {
     std::cout << tmp;
  }
}
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:

error: no match for 'operator>>' in 'in >> tmp'
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 10

运算符>>修改流,所以不要通过const,只是一个引用.

  • 这应该不足为奇.从一个instream读取现在改变你稍后将从同一个流中读取的内容.这是一个可观察的外部效应,因此应该考虑修改对象,而不管位置指针的内部实现细节. (2认同)