2013-05-28 22 views
-2

我試圖從cin向一個向量賦值。
我該如何實現while循環在特定單詞之後立即中斷,例如end,被輸入了? 在我的例子中,只有當我將這個詞作爲「年齡」輸入時,纔會中斷,因此只在循環的結尾處。如果我在開始時輸入它(如「名稱」),它就會繼續。While:字之後立即中斷

#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 <<'後。想想看。 – 2013-05-28 19:18:45