2015-06-24 2 views
0

я недавно наткнулся на этот код:C++ 11 для цикла с cin >> buff;

int count=0; 
for(std::string buf; std::cin>>buf;) { 
    count++; 
} 
std::cout << count; 
  1. Мои сомнения, что делает этот код делать?
  2. как есть cin>>buf предмет работа в состоянии часть?
  3. Разве это не бесконечный цикл?
  4. пытается записать его в C++ 11 дают мне ошибку для String, это std::string отличается от String, если да, то какой заголовок мне нужно для String
+0

В любой версии C++ нет предопределенной 'String'. – pmr

+0

ok, давайте рассмотрим, как я использую std :: string. Как это работает? –

ответ

1
  1. Предполагая String справедливо, когда это компилирует и запускает, он будет строить один раз, читать как можно много раз и рассчитывать по пути. count не имеет смысла, поскольку он не инициализирован.

  2. cin>>bufcin>>buf прочитано, конечно, но также и тест, и, как он читает успешно, выражение оценивается как true, поэтому цикл повторяется снова.

  3. Он может входить в бесконечный цикл, если пользователь не вводит EOF.

  4. pmr правый о классе: String отличается от string. Если вы хотите использовать цикл, самым простым решением является просто изменить его на std::string.

Смежные вопросы