molto basic, C++ programma si chiude dopo l’input dell’utente per nessun motivo particolare?

Ho appena iniziato a studiare il C++ e ho scritto questo programma di esempio dal testo, e quando ho compilazione e l’esecuzione di esso, non appena si chiude dopo che l’utente inserisce un numero qualsiasi e preme invio. Sto cercando di indovinare la risposta a questo è molto evidente quindi perdonami come novizio….e ‘ il mio primo programma in C++: P

#include <iostream>

using namespace std;

int main ()
{
  int numberOfLanguages;
  cout << "Hello Reader.\n"
       << "Welcome to C++.\n"

  cout << "How many programming languages have you used? ";
  cin  >> numberOfLanguages;

  if(numberOfLanguages < 1)
      cout << "Read the preface.  You may prefer.\n"
           << "a more elementary book by the same author.\n";
  else
      cout << "Enjoy the book.\n";

  return 0;
}
  • Questo è un classico 🙂 Basta aspettare che il getch() guerre… dov’è il mio popcorn.
  • Giraffa: ero in attesa che qualcuno consiglia di getch e mi sono sorpreso (e contento) non è venuto.
  • Il mio voto è sicuramente nella Ed.S. “Ora avete due scelte.” È quasi come un Skeet risposta.
  • Mi sto ancora chiedendo perché mai nessuno si consiglia di cin.get();. C’è qualcosa di sbagliato con esso?
InformationsquelleAutor | 2011-07-03

 

7 Replies
  1. 15

    Immagina di disegnare un modello per l’esecuzione dell’applicazione. Si hanno due scelte:

    A) Quando la fine di un programma è stato raggiunto comporterà.

    B) Quando la fine di un programma viene raggiunto, il programma deve rimanere in vita in qualche strano limbo di stato. È ancora mantenere le risorse di sistema e non verrà effettivamente fare qualcosa, ma per chiudere l’utente deve terminare in modo esplicito.

    Penso che chiunque sarebbe andare per l’opzione A qui, e che è quello che si sta vedendo. La fine di main è raggiunto e il programma si chiude.

    Se volete fare una pausa alla fine di prendere qualche input da parte dell’utente, cioè,

    char c;
    std::cin >> c;
    return 0;
  2. 6

    Il programma si chiude, perché non c’è niente di più per il programma di fare. Uscite le dichiarazioni finali davvero veloce e poi raggiunge return 0 che la fa uscire. Avrai voglia di fare qualcosa per mettere in pausa il programma.

    Su Windows, un modo di fare che è system("pause"); (avrete bisogno di #include <stdlib.h>)

    cin.getline è uno standard in più di un modo per farlo.

    • Quindi non dovrei essere in grado di vedere il "Read the preface..." o "Enjoy the book." con il programma così com’è?
    • È in fase di uscita, ma se non hai sovrumana potenza del cervello probabilmente non stanno andando per essere in grado di leggerlo prima che la finestra si chiude. Uscite a schermo e quindi la successiva azione è la fine del programma, che sta chiudendo la finestra.
  3. 6

    Si chiude, perché l’esecuzione raggiunge return 0; e non c’è più nulla da fare.

    Se si desidera che il programma di attesa prima della chiusura si potrebbe aggiungere un qualcosa di simile a questo:

    cout << "Press enter to exit...";
    cin  >> someVarThatWontBeUsed;

    Si potrebbe anche eseguire il programma dalla riga di comando invece di correre in .exe. Raggiungerà il termine di esecuzione comunque, ma la richiesta di rimanere aperti.

  4. 5

    Che il programma termina dopo la stampa del testo. Se si vuole vedere qualcosa sullo schermo, è possibile aggiungere un cin a destra prima del vostro return 0 così il programma rimane in attesa di una risposta dell’utente prima di uscire.

    //Wait for user to hit enter
    cin >> dummyVar;
    
    return 0;
  5. 2

    Il programma che hai postato è un errore. Non ero in grado di compilare quello che hai postato.

      cout << "Hello Reader.\n"
       << "Welcome to C++.\n"

    non termina con un punto e virgola. Ho aggiunto un punto e virgola, e di essa viene compilato ed eseguito come previsto.

    Edit: naturalmente, è necessario eseguire il programma in un terminale che rimane aperto dopo la chiusura del programma o usare cin aspettare per più di input, o qualcosa di simile.

  6. 0

    Dopo che l’utente inserisce un numero, che viene salvato numberOfLanguages, raggiunge return 0 che ritorna dal main funzione e, quindi, il programma termina.

Lascia un commento