2015-11-19 4 views
-4
void phonebookmenu() { 
    phonebook ph; 

    string str; 

    cin.ignore(); 
    cout << "PH> "; 
    getline(cin, str); //Input from user. 

    string buf; // Have a buffer string. 
    stringstream ss(str); // Insert the string into a stream. 
    vector<string> tokens; // Create vector to hold the words. 

    while (ss >> buf){ 
     tokens.push_back(buf); //Adds all the words inside the vector. 
    } 

    while (true){ 
    if (tokens[0] == "add"){ 
      ph.add(tokens[1],tokens[2]); 
    } 
    else if(tokens[0] == "lookup"){ 
      ph.lookup(tokens[1]); 
    } 
    else if(tokens[0] == "change"){ 
      ph.change(tokens[1],tokens[2]); 
    } 
    else if(tokens[0] == "alias"){ 
      ph.alias(tokens[1],tokens[2]); 
    } 
    else if(tokens[0] == "quit"){ 

      //Return to the "Main-menu" 
    } 

    else{ 
     cout << "Invalid input" << endl; 
    } 
} 

Так что я вызываю это меню из «Main-menu», но после ввода чего-то типа «Добавить peter 123» он выполняет функцию, а затем возвращается к «Main -меню ", которого я не хочу. Он должен вернуться кC++ Infinite-loop, Issue with returns

cout << "PH> "; 

Так что я могу продолжать выполнять операции.

+4

В чем вопрос? – Drop

+0

Как правильно настроить этот цикл? Он делает это только один раз, затем возвращается в «Главное меню». – Widdin

+0

Вам нужно добавить цикл, если вы хотите, чтобы он был в цикле. – NathanOliver

ответ

0

Цикл не вокруг логики cout/input/determine/do something. Это только вокруг determine/do something. Переместите while до cout и посмотрите, что произойдет. Обязательно отметьте ответ, который помогает большинству в качестве ответа.