FIle einlesen, erstes Zeichen betrachten



  • Hallo,

    ich hab ein Problem damit, wenn ich ein txt File einlese, das erste Zeichen aus einer Zeile zu lesen.

    88   while (getline(fileIn, line))
     89   {
     90     if (line[0] == '-')
     91     {
     92       line.erase(line.begin());
     93       stringToInt = atoi(line.c_str());
     94       bin = dec2bin(stringToInt, bits);
     95       posToNeg(bin);
     96     }
     97     else
     98     { 
     99       stringToInt = atoi(line.c_str());
    100       /*assert(line[0] == '1' || line[0] == '2' || line[0] == '3' ||  line[0] == '4' ||
    101              line[0] == '5' || line[0] == '6' || line[0] == '7' || line[0] == '8' ||
    102              line[0] == '9' || line[0] == '0');*/
    103       bin = dec2bin(stringToInt, bits);
    104     }
    105     fileOut << bin << endl;
    106   }
    

    auf jeden fall habe ich das gefühl, das er nur das - betrachtet wenn eine 3 stellige zahl danach kommt und sonst irgendwie ignoriert.

    Hat vielleicht jemand eine Idee woran das liegen kann ?

    Gruß


  • Mod

    Was soll das überhaupt genau machen, wenn es fertig ist (beschreib nicht, wie du es machen willst, das können wir sehen, sondern was du erreichen möchtest)? Was immer du da tust ist irgendwie über drei Ecken und mit Funktionen die eigentlich nicht gut zusammen passen gefrickelt. Kein Wunder, dass es nicht das tut, was du dir wünscht.



  • ja, vielleicht sollte ich erstmal die Leerzeichen im file ignorieren...



  • Was ich damit machen möchte ist im Prinzip, das ich ein File habe in denen pos. und neg. Zahlen stehen und diese ins Zweierkomplement umwandle und in ein neuen file schreibe.
    Das Umwandeln funktioniert auch ohne Probleme, nur habe ich grad Probleme damit das file richtig einzulesen.

    while (getline(fileIn, line))
     90   { 
     91     it = line.begin();
     92     while(*it == ' ') it++;
     93     if (*it == '-')
     94     { 
     95       line.erase(line.begin(), ++it); 
     96       stringToInt = atoi(line.c_str());
     97       bin = dec2bin(stringToInt, bits);
     98       posToNeg(bin);
     99     } 
    100     else
    101     {
    102      
    103       stringToInt = atoi(line.c_str());
    104       assert(line[0] == '1' || line[0] == '2' || line[0] == '3' || line[0] == '4' ||
    105              line[0] == '5' || line[0] == '6' || line[0] == '7' || line[0] == '8' ||
    106              line[0] == '9' || line[0] == '0');
    107       bin = dec2bin(stringToInt, bits);
    108     } 
    109     fileOut << bin << endl;
    110   }
    

    aber irgendwie stimmt da immer noch etwas nicht mit dem einlesen von den neg. Zahlen. jetzt kommt ein glibc


  • Mod

    Warum machst du dann nicht

    int zahl;
    while (fileIn >> zahl)
     {
      // Verarbeitung
     }
    

    zum Lesen? Und zur Verarbeitung empfehle ich die Funktion abs, falls deine Funktion dec2bin nicht mit Vorzeichen klarkommt.



  • Vielen Dank 🙂

    Funktioniert damit prima!


Anmelden zum Antworten