2010-11-22 10 views
4

Ich habe an diesem Programm für eine Weile gearbeitet und ich habe schließlich die Kompilierfehler los. Aber als ich es versuchte, übersprang das Programm im Grunde eine Codezeile.Programm überspringt eine Zeile Code

#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; 
} 

Sie sehen, wie nach dem zu fragen, ob dies Ihre Indexseite der nächsten cin.getline Funktion egal Szenario überspringen.

Antwort

5

Wenn der Benutzer den Index eingegeben hat, hat er auch einen Zeilenumbruch eingegeben, aber Ihr cin hat ihn nicht aus dem Eingabestream entfernt. Also, Ihr Aufruf an cin.getline kehrt sofort wegen des übriggebliebenen Zeilenumbaus zurück.

Fügen Sie einen Anruf zu cin.ignore vor der cin.getline hinzu, um es auszuspülen.

0

ersetzen getline (cin, NameOfFile, '\ n')

mit

cin >> NameOfFile

+0

Ich kann das nicht tun, ich brauche Räume zu bekommen –

Verwandte Themen