Kopieren einer Datei in einen Vector



  • Hallo,

    ich habe eine XML-Datei die ich in einen std::vector<unsigned char> kopieren will um sie an eine C-Schnittstelle zu übergeben.
    Die Suche ergab http://www.c-plusplus.net/forum/viewtopic-var-t-is-227170.html als wertvollen Hinweis.

    Das dort von Dravere gepostete Beispiel nur auf unsigned char angepasst:

    #include <vector> // vector
    #include <fstream> // ifstream
    #include <iterator> // istream_iterator, back_inserter
    #include <algorithm> // copy
    
    // ...
    
    std::ifstream file("...");
    std::vector<unsigned char> vec;
    
    std::copy(std::istream_iterator<unsigned char>(file),
              std::istream_iterator<unsigned char>(),
              std::back_inserter(vec));
    

    Dravere schrieb:

    std::istream_iterator liest mit dem operator >>. Per Default ist skip whitespace als Option aktiviert. Jeglicher Linefeed, Carriage Return, Space und Tab wird ignoriert. Die Copy Anweisung kopiert nun jeglicher double im File in den Vektor, bis das Ende des Files erreicht wird.

    Genau hier liegt auch mein Problem, wie bekomme ich es hin, dass die Spaces etc enthalten bleiben? Oder gibt es eine bessere / elegantere Art dies zu lösen?

    Ich habe mir schon den Umweg über einen std::stringstream überlegt, bin mir da aber unsicher ob das so funktioniert oder ob ich in Konvertierungsprobleme stolpere?

    Vielen Dank
    fileproblem



  • würds eher mit nem string machen und dann mit der c_str methode an die C lib übergeben.

    #include <fstream>
    #include <string>
    
    // ...
    
    std::ifstream file("...");
    std::string content;
    std::string line;
    
    while (getline(file, line)) 
            content.append(line);
    
    c_schnittstelle(content.c_str());
    
    // ...
    


  • file >> noskipws;
    


  • MFK schrieb:

    file >> noskipws;
    

    Super, Danke das wars 🙂


Anmelden zum Antworten