2013-05-28 2 views
-2

Я пытаюсь присвоить некоторые значения вектору от cin.
Как добиться того, чтобы цикл while прерывался сразу после определенного слова, например. end, был введен? В моем примере он только ломается, если я ввожу это слово как «возраст», поэтому только в конце цикла. Если я вхожу в него в начале (как «имя»), он просто продолжается.Пока: Перерыв сразу после слова

#include <iostream> 
#include <vector> 
using namespace std; 

struct person { 
    string name; 
    string age; 
}; 
int main() { 
    vector<person> myPerson; 
    string text; 

    while(text != "end") { 
     person tempPerson; 

     cout << "Name:" << endl; 
     cin >> text; 
     tempPerson.name = text; 

     cout << "Age:" << endl; 
     cin >> text; 
     tempPerson.age = text; 

     myPerson.push_back(tempPerson); 
    } 
    for(int i=0; i<myPerson.size(); i++) { 
     cout << "Person No. " << i << ": " << endl; 
     cout << "Name: " << myPerson[i].name << endl; 
     cout << "Age: " << myPerson[i].age << endl; 
    } 

    return 0; 
} 
+2

Вы должны включить заголовок '', чтобы использовать 'std :: string'. Не полагайтесь на косвенный заголовок. – 0x499602D2

ответ

4

break из цикла, если "end" вводится.

while (true) { 
    cin >> text; 
    if (text == "end") 
     break; 

    // ... 
} 
+0

После каждого 'cin'? Так дважды в моем случае? Или есть более элегантный способ? – user1170330

+0

@ user1170330 Нет необходимости в этом - только после первого вызова 'cin :: operator <<'. Думаю об этом. –