string einlesen?



  • du musst den >> und den << operator überladen oder du umgehst das mit get und set methoden

    Bsp.:

    void setName( string n) { name = n; }
    string getName() { return name; }

    cout << getName(name) << endl;



  • leech schrieb:

    du musst den >> und den << operator überladen oder du umgehst das mit get und set methoden

    Bsp.:

    void setName( string n) { name = n; }
    string getName() { return name; }

    cout << getName(name) << endl;

    Sicher dass du hier im richtigen Thread gepostet hast? Ich verstehe nicht was dieser Code macht und bezweckt. Er wird wohl nichtmal kompiliert.



  • er will doch in einem seiner objekte strings speichern, oder?

    hier wollte ich ihm zeigen, wie er mit den methoden die strings speicher kann, weil es ja mit seinem cin >> name; nicht klappt...

    das beispiel soll nur die get und set methoden erläutern, falls er nicht weiß, was das ist... man kann ja nicht einen kompletten quellcode posten, da er ja selber nicht viel gepostet hat



  • leech schrieb:

    er will doch in einem seiner objekte strings speichern, oder?

    hier wollte ich ihm zeigen, wie er mit den methoden die strings speicher kann, weil es ja mit seinem cin >> name; nicht klappt...

    das beispiel soll nur die get und set methoden erläutern, falls er nicht weiß, was das ist... man kann ja nicht einen kompletten quellcode posten, da er ja selber nicht viel gepostet hat

    Ok, aber eigentlich sollte >> fuer std::string definiert sein.

    Ist vielleicht die Compilerinstallation kaputt? Oder irgendwelche Header nur
    korrupt? (das hatte ich schonmal)

    mfg
    v R



  • das problem ist ja, dass du wenn du die strings in deiner klasse als private deklariert hast, dass nur die methoden der klasse darauf zugreifen können und man das nicht von aussen verändern kann.....

    #include <iostream>
    #include <string>
    using namespace std;
    
    class test
    {
        private:
            string test1;
        public:
            void setString(string n)   { test1 = n; }
            string getString()  { return test1; }
    };
    
    int main()
    {
        string name;
        test eins;
    //   cin >> eins::test1; FEHLER! 
        cin >> name;
        eins.setString(name);
        cout << eins.getString();
        cin.get();cin.get();
        return 0;
    }
    


  • Ok, jetzt weiss ich was gemeint war. Gut dass du das so erkannt hast. Ich habe
    nur den Code

    string name;
    cin >> name;
    

    gesehen. Und daraus geht nicht hervor, dass er sowas wie

    cin >> myclass::string_instance;
    

    meinte. Der von ihm gepostete Code war absolut korrekt und lauffaehig.

    mfg
    v R



  • gut das wir das (endlich) geklärt haben 😉

    hoffe das Waermeleitpaste das überhaupt noch liest 😎



  • Welche Compiler nutzt ihr?
    Ich hab den Rest des Programms weggelassen, klar hab ich noch die nötigen Methoden usw., aber das Einzige was Streß macht ist halt das Einlesen des Strings, was die Fehlermeldung des Compilers eindeutig nahelegt. Ich benutze deswegen <iostream.h> weil ich eben den MS VC++ 6.0 Compiler drauf hab und nicht 7 oder .net. 😉
    Sorry, dass ich das gestern Abend nimmer gelesen hab.

    Edit:
    Kann mir jemand ne Lösung anbieten? ( Ich mein außer 7.0, .net oder was weiß ich zu installieren. ) Wie von mir vermutet handelt es sich wahrscheinlich um einen Fehler im 6.0 Compiler, dessen STL oder was auch immer. ^^

    Edit2:
    Ich hab hier kein Problem damit, dass ich es später in private Werte schreibe. Dafür nutze ich Methoden. Wie gesagt handelt es sich nur um ein Problem beim Einlesen des Strings. Das schluckt mein Compiler nicht.
    Ich kann es zwar durch das Einlesen eines Char-Arrays und einer static_cast Umwandlung an die Stringvariable übergeben, aber wozu dann überhaupt string nutzen wenn ich in dem Fall praktisch nur mir char-arrays arbeiten muss. o_O



  • MS VC++ 6.0 ServicePack 4 gesaugt. Compilerfehler beseitigt. Ist da denn niemand drauf gekommen oder kriegt ihr alles vom Admin aufgespielt? *g*



  • Waermeleitpaste schrieb:

    MS VC++ 6.0 ServicePack 4 gesaugt. Compilerfehler beseitigt. Ist da denn niemand drauf gekommen oder kriegt ihr alles vom Admin aufgespielt? *g*

    Naja, meine Wenigkeit besitzt nicht den MS VC++ 6.0. Hab bei mir das MinGW
    Developer Studio drauf (gcc) und dort funktioniert das halt alles ohne Probleme.

    mfg
    v R


Anmelden zum Antworten