Anzahl der von getline zurückgelieferten Zeichen



  • Hallo zusammen,

    ich habe folgenden Code:

    ifstream f;
    		 f.open(FiName.c_str());
    		 char buffer[100];
    		 while (!f.eof()) {
    			 f.getline(buffer, 100, '\n');
    		 }
    		 f.close();
    

    Gibt es eine Möglichkeit herauszufinden, wie viele Zeichen ausgelesen wurden, bis das das '\n' gefunden wurde?

    Gruss
    Lodo2609



  • Hallo

    Wenn du es in ordentlichen C++ machst ist es sehr einfach

    #include <string>
    ...
             ifstream f;
             f.open(FiName.c_str());
             string buffer;
             while (!f.eof()) {
                 getline(f, buffer);
                 cout << "Zeichen : " << buffer.size() << std::endl;
             }
    //         f.close(); brauchst du nicht, wird von ifstream austomatisch gemacht
    

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • akari schrieb:

    Hallo

    Wenn du es in ordentlichen C++ machst ist es sehr einfach

    #include <string>
    ...
             ifstream f;
             f.open(FiName.c_str());
             string buffer;
             while (!f.eof()) {
                 getline(f, buffer);
                 cout << "Zeichen : " << buffer.size() << std::endl;
             }
    //         f.close(); brauchst du nicht, wird von ifstream austomatisch gemacht
    

    bis bald
    akari

    Das führt zu UB (Undefined Behaviour)

    Besser so:

    #include <fstream>
    #include <string>
    #include <iostream>
    
    int main(){
       std::ifstream ifstr("datei.txt");
       std::string buffer;
       while(std::readline(ifs, buffer))
          std::cout << "Zeichen: " << buffer.length() << std::endl;
    }
    


  • Muss das std::readline oder std::getline heißen? std::readline wird bei mir nicht gefunden.


Anmelden zum Antworten