Char



  • Wie kann ich bewirken,dass bei der EIngabe eines Namens(char),der Compiler Vorname und Nachnahme ausgibt?Also z.B.franz mueller
    Wenn ich das jetzt eingebe,kommen wirre Sachen auf dem Bildschirm,und nicht der Name!
    Wie kann ich das umgehen?
    also das sieht bei mir so aus:
    ...
    char name[30];
    ...
    cout << "\n Bitte geben Sie Ihren Namen ein: ";
    cin >> name;
    ...
    strncpy(name,kunde,sizeof(name));



  • std::string eingabe;
    getline(cin,eingabe);
    cout<<eingabe;
    char cstring[100] = eingabe.c_str();
    cout<<cstring;
    


  • NOchmal ganz einfaches Programm,das Vor und Nachnahme ausgeben soll,gibt aber nur Vorname aus!!!!!

    int main()
    {
    char name[30];
    cout<<"Bitte eingeben\n";
    cin>>name;
    cout<<name;
    getch();
    }



  • weil cin >> name; bei auftreten eines leerzeichens beendet wird.

    versuche einmal

    cin>>name;
    cout<< "vorname : " << name << endl ; 
    cin>>name;
    cout<< "nachname : " << name << endl ;
    

    K



  • oder

    cin.getline(name, 30);
    


  • Das mit dem getline hatte ich schon probiert,aber das klappte nicht,hier mal ein Ausschnitt aus meinem Programm,wo cin.getline nihct funktioniert...
    lass Stromrechnung
    {
    public:
    Stromrechnung (char *kunde, float stromverbrauch);
    Stromrechnung();
    void displayKunde();
    void eingabe();
    void berechnung();
    ~Stromrechnung();

    private:
    float verbrauch;
    char name[30];
    int grundgebuehr[4];
    float tarif[4];
    float summe[4];
    int variante;
    int datenvorhanden;
    };

    Stromrechnung :: Stromrechnung(char *kunde, float stromverbrauch)
    {
    int gg[4]={35,50,65,80};
    float ta[4]={0.35,0.25,0.21,0.18};
    int i;
    for (i=0;i<4;i++)
    {
    grundgebuehr[i]=gg[i];
    tarif[i]=ta[i];
    }
    datenvorhanden=1;
    strncpy(name,kunde,sizeof(name));
    verbrauch = stromverbrauch;
    }

    Stromrechnung :: Stromrechnung()
    {
    int gg[4]={35,50,65,80};
    float ta[4]={0.35,0.25,0.21,0.18};
    int i;
    for (i=0;i<4;i++)
    {
    grundgebuehr[i]=gg[i];
    tarif[i]=ta[i];
    }
    datenvorhanden=0;
    }
    // Ende Konstruktoren
    Stromrechnung::~Stromrechnung()
    {
    }

    void Stromrechnung::eingabe()
    {
    clrscr();
    cout << "\n Bitte geben Sie Ihren Nachnamen ein: ";
    cin >>name;
    cout << "\nBitte geben Sie Ihren Stromverbrauch (kW/h) ein: ";
    cin >> verbrauch;
    }



  • kann in deinem code kein getline() finden.
    und bitte code-tags verwenden.
    K.



  • was sind denn code-tags?
    ganz unten im prog steht cin>>name;
    da hab ich bei mir cin.getline(name,30);ausprobiert,und anstatt das ich da einen namen eingeben kann,sprANG ES SOFORT WEITER AUF geben sie ihren Stromverbrauch an...



  • das kann natürlich passieren wenn noch ein newline im eingabepuffer steht bevor du

    cin.getline();
    

    aufrufst. Du musst sicherstellen dass der eingabepuffer vorher leer ist .
    K



  • Genau,hab ich gerade auch rausgefunden,habe einfach:
    cin.ignore();
    davor gesetzt und schon hats geklappt!!!
    Danke schön!!!



  • tipp: statt cin.getline() --> getline(stream/*cin*/,variable) benutzen

    /EDIT: natürlich muss dann "variable" vom typ std::string sein.


Anmelden zum Antworten