Как я могу читать из std :: istream (используя оператор >>)? - PullRequest
1 голос
/ 20 августа 2009

Как я могу читать с std::istream, используя operator>>?

Я попробовал следующее:

void foo(const std::istream& in) {
  std::string tmp;
  while(in >> tmp) {
     std::cout << tmp;
  }
}

Но выдает ошибку:

error: no match for 'operator>>' in 'in >> tmp'

Ответы [ 3 ]

9 голосов
/ 20 августа 2009

Оператор >> изменяет поток, так что не передавайте по константам, просто ссылку.

3 голосов
/ 20 августа 2009

Используйте неконстантную ссылку:

void foo(std::istream& in) {
  std::string tmp;
  while(in >> tmp) {
     std::cout << tmp;
  }
}
1 голос
/ 20 августа 2009

Вы делаете это правильно. Вы уверены, что включили все заголовки, которые вам нужны? (<string> и <iostream>)?

...