String is not declared



  • Hi alle zusammen,

    ich bin grad dabei ein kleines telefonbuch auf konsolenebene zu schreiben....
    ganz einfach aufgebaut!

    hab ein projekt mit main und dann wenn man einen neuen eintrag machen will geht er zur neu.cpp.

    diese sieht so aus:

    #include "header.h"
    #include <string.h>
    
         string name1, name2;
         int eingabe2;
         int vorwahl;
         int nummer;
    
    void neu(void)
    {
    
         cout<<"Neuer Eintrag"<<endl<<endl;
    
         cout<<"Bitte den Vornamen eingeben: ";
         cin>>name1;
    
         cout<<"Bitte Nachname eingeben: ";
         cin>>name2;
    
         cout<<"Bitte Vorwahl eingeben: ";
         cin>>vorwahl;
    
         cout<<"Rufnummer eingeben: ";
         cin>>nummer;
    
         cout<<endl<<endl<<"1 zum Bestaetigen, 2 zum Löschen des Eintrags"<<endl<<endl;
    
         cout<<(name1 + " " + name2 + "  " + vorwahl + "/" + nummer);
    
         cout<<endl<<endl;
         cout<<"Eingabe: ";
         cin>>eingabe2;
    
         if(eingabe2==1)
         {
    
         ofstream fout("speicher.txt");
         fout<<(name1 + " " + name2 + "  " + vorwahl + "/" + nummer);<<endl;
    
         cout<<"Gespeichert";
    
         }
    
         }
    

    Fehlermeldungen:

    string does not name a type
    redefinition for 'int vorwahl'
    name 1 und 2 und vorwahl und nummer sind undecleared
    ....

    hilfe



  • 1. #inlcude <string> nicht <string.h>
    2. benutze std::string (der namespace ist std)

    Simon



  • geht nicht 😞



  • Manu82 schrieb:

    geht nicht 😞

    ha, ja. und was geht denn nicht?
    kann nicht hellsehen...



  • Das ist auch kein C++ Code.

    #include "header.h"
    #include <string>   // 1. Fehler
    #include <iostream> // Ich kann nur raten das du es inkludiert hast...
    #include <fstream>  // Ich kann nur raten das du es inkludiert hast...
    
    using namespace std; // Da du den std:: Namensraum nicht explizid angibst
    
    // 3. Anmerkung
    // => Globale Variablen bitte vermeiden wenn möglich!
    //    (Habe alle in die Funktion verschoben)
    
    void neu() // 4. Anmerkung: (void) in der Parameterliste ist in C++ nicht nötig
    {
        string name1, name2;
        int eingabe2; // 5. Anmerkung: Am Namen erkennt man keine Funktion der Variable
        int vorwahl; // 6. Anmerkung: Und was ist mit der führenden 0? (Besser: string)
        int nummer;
    
        // 7. Anmerkung: Einrücken und Sinnvolle Gruppierungen machen es lesbarer
    
        cout << "Neuer Eintrag" << endl << endl;
    
        cout << "Bitte den Vornamen eingeben: ";
        cin >> name1;
    
        cout << "Bitte Nachname eingeben: ";
        cin >> name2;
    
        cout << "Bitte Vorwahl eingeben: ";
        cin >> vorwahl;
    
        cout << "Rufnummer eingeben: ";
        cin >> nummer;
    
        cout << endl << endl
          << "1 zum Bestaetigen, 2 zum Löschen des Eintrags"
          << endl << endl;
    
        cout << (name1 + " " + name2 + "  " + vorwahl + "/" + nummer);
          << endl << endl;
        cout << "Eingabe: ";
        cin >> eingabe2;
    
        if(eingabe2 == 1)
        {
            // Siehe Anmerkung 5: Sprechende Namen machen es auch lesbarer
            ofstream file("speicher.txt");
            file << (name1 + " " + name2 + "  " + vorwahl + "/" + nummer) // Hier war ein ";" zuviel
              << endl;
    
            cout << "Gespeichert";
        }
    }
    

    cu André



  • Manu82 schrieb:

    geht nicht 😞

    Grundsätzlich: Fehlermeldungen angeben

    Ich tippe aber einfach mal auf einen veralteten Compiler (Einer der sich nicht nach an den inzwischen 10 Jahre alten C++ Standard hält...).



  • ok,

    habe den code mal angepasst

    Fehlermedlungen nun:

    string does not name a type 4x
    no match for operator + in std::operator 2x



  • Welchen Compiler verwendest du?

    MfG SideWinder


Anmelden zum Antworten