2015-04-01 6 views
0

У меня проблема с моей программой на C++. Я переформатирую и показываю слова, которые пользователь вводит в консоль. Если пользователь вводит: Привет, я bob. Пользователь будет нажимать клавишу ввода после ввода bob в консоль. Я переформатирую это и перепечатаю его в новом формате. Проблема в том, что я не хочу отображать сообщение для большего ввода, пока не будут введены все слова на этой консольной линии. В текущем цикле я либо выводит запрос на ввод после каждого слова, либо вообще не отображает его. Это зависит от того, включаю ли я приглашение или нет. Мне нужно сделать цикл цикла каждым словом, вывести его и остановить после последнего слова. Что такое булевский параметр? Я использую свой код для справки.C++, cin до тех пор, пока больше не будет введено в строке с использованием цикла while

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    int b; 
    string input; 
    string output ; 
    int check = 1; 

    while (check){ 
     cout << "Enter in one or more words to be output in ROT13: " << endl; 
     cin >> input; 
     while(my issue is here){ 

      const char *word = input.c_str(); 

      for (int i = 0; i < input.length(); i++){ 

       b = (int)word[i]; 
       if (b > 96){ 
        if (b >= 110){ 
         b = b - 13; 
        } 
        else { 
         b = b + 13; 
        } 

        output += ((char)b); 
       } 

       else 
       { 
        if (b >= 78){ 
         b = b - 13; 
        } 
        else { 
         b = b + 13; 
        } 

        output += ((char)b); 
       } 







      } 
      cout << output << endl; 
      output = ""; 
      cin >> input; 

     } 

      check = 0; 

    } 

    return 0; 
} 

ответ

4

Вы можете заменить весь в то время как петля с этой линией:

std::getline(std::cin, input); // where input is a std::string 

А потом делать переформатирование после этой строки.

0

Функция cin вернет false, если для ввода больше нет строк. Вы можете сделать следующее, чтобы прочитать до конца ввода, или eof, если вы перенаправляете cin для чтения из файла.

int a; 
while(cin >> a){ 
    //Your loop body 
} 
+0

@NeilKirk Я никогда не говорил while (eof) –

+0

Я сказал «до конца ввода» или «eof» –

+0

Вы можете делать freopen («filename», «r», m stdin); для перенаправления ввода. –

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