Konsole gibt nur symbole aus



  • Hallo ich will gerade eine Zahl aus einer Text Datei auslesen, und die Zahl dann in einem Array Speichern.

    Aber bei der Ausgabe bekomme ich immer nur irgendwelche Symbole.

    Wie z.b. ein Smile.

    #include <sstream>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int var1;
    int neue_zahl;
    stringstream Str;
    string array[4];
    
    int main ()
    {
         ifstream myFile;
         myFile.open ("test.txt");
         myFile >>var1;
    
        myFile.close();
    
        array[1] = var1;
        cout<<array[1];
    
        system("PAUSE");
    }
    


  • roflcopter schrieb:

    Hallo ich will gerade eine Zahl aus einer Text Datei auslesen, und die Zahl dann in einem Array Speichern.

    Von dem schlechten Programmierstil (globale Variablen...) mal abgesehen: Eine Zahl ist kein String. Eine Konvertierung zwischen den Typen ist notwendig (schau mal unter die FAQ...)

    cu André



  • Hatte ich ausversehen Global deklariert ūü§°

    Naja egal, meine Zahl wird jetzt aufjedenfall schon mal richtig angezeigt.

    Aber ein Smile wird immer noch mit ausgeben, da war doch mal irgendwas mit sonem 0 byte oder bit oder irgendwie sowas was man Terminieren sollte oder so.

    Lieg ich da richtig oder total falsch?

    Falls richtig weiss wer wie das geht?

    #include <sstream>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main ()
    {
    
    int var1;
    int neue_zahl;
    
    stringstream Str;
    
    string array[4];
    
         ifstream myFile;
         myFile.open ("test.txt");
         myFile >>var1;
    
        myFile.close();
    
            Str<<var1;
            Str>>neue_zahl;
    
         cout<<neue_zahl;
    
    array[1] = neue_zahl;
    
        cout<<array[1];
    
        system("PAUSE");
    }
    


  • Jetzt weiss ichs wieder :>

    array[1]= '\0';
    cout<<array[1];



  • Nicht dein ernst oder?
    Da nimmst du schon C++-Strings und willst sie nutzen wie C-Strings? Das ist theoretisch möglich aber völlig unnötig.

    Warum √ľberhaupt ein Array von strings?

    string str = Str.str();
    cout << str << endl;

    sollte das sein was du suchst (anders benennen w√ľrde ich es dann doch...).



  • Und wie soll das so gehen o_O

    string str = Str.str();
    cout << str << endl;

    Und was ist daran besser mein Programm funktioniert ja.

    Naja char array reicht wohl auch. ^^



  • roflcopter schrieb:

    Und was ist daran besser mein Programm funktioniert ja.

    Morgens Sydney, der Code hält... 3-Wetter-Code...

    Schlechte Programmierung bleibt schlechte Programmierung wenn man nicht bereit ist sie zu √Ąndern. Sogenannte C-String (char-Arrays) sind ein C-Relikt und werden aus gutem Grund innerhalb von C++ gemieden (Alleine schon der komplizierteren Benutzung wegen sehe ich hier ein Grund).



  • Hab das ganze nur mal so √ľberflogen.

    Eine Sache ist mir aufgefallen die du schnell lernen solltest.

    ein Array beginnt immer mit einer 0, nicht mit einer 1.

    Ich gib dir mal ein Beispiel:

    string Namen[5];  // du machst ein String-Array, mit Platz f√ľr 5 Namen
    
    Namen[1] = "Peter"; // du fängst mit der 1 an (dein Fehler)
    ...                 // vergibst weitere Namen.
    Namen[5] = "Klaus"  // und.. hoppla greifst auf einen Array-Index zu welcher  
    //nicht existiert. Im g√ľnstigsten Fall kriegst du einen Runtime-Error
    // Jedoch passiert es eher das du dir einen schwer zu findenden Bug im Programm
    // einhandelst weil du einen undefinierten Bereich geschrieben hast.
    // Dies kann eine Variable sein, evtl was harmloses, aber unberechenbar und
    // schwer zu finden wenn man nicht weiss wonach man sucht.
    
    // heisst auf deutsch:
    // Array-Bereich beim Wert 5 ist z.B: 0-4, und NICHT 1-5.
    // Nur f√ľr den Fall das du diesen Fehler Ausversehen gemacht hast.
    // Merk es dir, das erspart dir hässliche Programmierfehler.
    

Log in to reply