программа пропускает строку кода - PullRequest
4 голосов
/ 22 ноября 2010

Я некоторое время работал над этой программой и наконец-то избавился от ошибок компиляции. Но когда я попробовал, программа пропустила строку кода.

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main(){
  string nameOfFile = "";
  char index;
  char title[100];
  char name[100];
  char copyright[100];

  cout << "Welcome, and hello to the html templating software" << endl;
  cout << "Is this your index page?\ny/n" << endl;

  cin >> index;
  if (index=='n'){
    cout << "Enter the prefered name of this file" << endl;
    getline(cin, nameOfFile, '\n');
  }

  cout << "What will the title of the page be?" << endl;
  cin.getline(title, 100);

  cout << "What is your name?" << endl;
  cin.getline(name, 100);

  cout << "What is the copyright?" << endl;
  cin.getline(copyright, 100);

  cin.get();
  return 0;
}

Вы видите, как после запроса, является ли это вашей индексной страницей, она пропускает следующую cin.getline функцию независимо от сценария.

Ответы [ 2 ]

5 голосов
/ 22 ноября 2010

Когда пользователь вводил индекс, он также вводил новую строку, но ваш cin не удалял его из потока ввода. Таким образом, ваш вызов cin.getline немедленно возвращается из-за остатка новой строки.

Добавьте вызов к cin.ignore перед строкой cin.get, чтобы очистить его.

0 голосов
/ 22 ноября 2010

заменить getline (cin, nameOfFile, '\ n')

на

cin >> nameOfFile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...