2016-09-02 1 views
-1
//============================================================================ 
// Name  : Lab02.cpp 
// Author  : Insert name 
// Version  : 
// Copyright : 
// Description : Hello World in C++, Ansi-style 
//============================================================================ 
/* 
* Write a program that displays 
* First and last name on one line 
* Address on the nest line 
* writes your city, state, zip on next line 
* writes telephone number on the next line 
* 
* Example: First Last 
*   123 Street Avenue 
*   City, Ca. Zipcode 
*   (925)555-5555 
*/ 
#include <iostream> 
#include <string> 
using namespace std; 

int main() { 

    long double fullName; 
    unsigned int address; 
    string cityZip; 
    unsigned int phoneNumber; 

    cout << "Please enter you full name" << endl; 
    cin >> fullName; 
    cout << fullName << endl; 

    cout << "Enter your address" << endl; 
    cin >> address; 
    cout << address << endl; 

    cout << "Please enter your city, zipzode, and state" << endl; 
    cin >> cityZip; 
    cout << cityZip << endl; 

    cout << "Enter your phone number" << endl; 
    cin >> phoneNumber; 
    cout << phoneNumber << endl; 


    return 0; 
} 

Dies ist die Ausgabe der Konsole Ausgebenmein Code ergibt 0, wenn i Eingang

Please enter you full name 
first last 
0 
Enter your address 
0 
Please enter your city, zipzode, and state 

Enter your phone number 
0 

Mein Code ist hält 0 einzugeben versuchen und ich geben doesnt zu lassen beenden, was der Code aufgefordert. Kann mir jemand sagen, was ich falsch mache? Soll ich GetLine anstelle von String verwenden?

+2

Warum ist Ihr vollständiger Name ein 'long double'? Und deine Adresse ein 'unsigned int'? – tkausl

+0

@tkausl Ich habe versucht zu sehen, was das Problem verursacht hat. Sollte ich sie nicht benutzen? –

Antwort

2
long double fullName; 

cout << "Please enter you full name" << endl; 
cin >> fullName; 

A long double ist ein numerischer Wert. Sie fordern zur Eingabe in einen numerischen Wert auf. Sie können sehr versuchen, hier einen Namen einzugeben, aber da der Wert ein long double ist, wird es offensichtlich nicht funktionieren.

Der Eingabeanalysefehler wird std::cin in einen fehlgeschlagenen Zustand versetzen, und alle nachfolgenden Eingabeoperationen werden sofort fehlschlagen, was zu der von Ihnen beobachteten Ausgabe führt.

Fazit:

  1. Fix den Typ der alle Variablen. Sie sollten std::string s sein.

  2. Geben Sie std::getline() ein, um eine Textzeile einzugeben. operator>> analysiert eine einzelne durch Leerzeichen begrenzte Arbeit. Ihre Absicht ist hier, bei jeder Aufforderung eine ganze Textzeile zu lesen, die möglicherweise Leerzeichen enthält. operator>> hört auf, an der ersten Stelle zu lesen.

+0

Also nach der Verwendung der Std :: Getline (Std :: Cin, FullName); Die Konsole druckt den vollständigen Namen, aber es gibt immer noch 0 zurück und lässt mich die Eingabe für den Rest der Aufforderungen nicht beenden? –

+0

Es ist nicht nur 'fullName'. Das gleiche gilt für alle anderen Variablen. –

+0

Also ändern Sie die Variablen in string und tun dies \t cout << "Bitte geben Sie Ihren vollständigen Namen" << endl; \t Std :: Getline (Std :: Cin, FullName); \t cout << fullName << endl; \t cout << "Geben Sie Ihre Adresse ein" << endl; \t Std :: Getline (Std :: Cin, Adresse); \t cout << adresse << endl; \t cout << "Bitte geben Sie Ihre Stadt, zipzode, und Staat" << endl; \t Std :: getline (Std :: cin, cityZip); \t cout << cityZip << endl; \t cout << "Geben Sie Ihre Telefonnummer ein" << endl; \t std :: getline (std :: cin, phoneNumber); \t cout << phoneNumber << endl; –

Verwandte Themen