Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Ifstream Teile einer Datei einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.12.2007, 11:48 Uhr
~Franz
Gast


Hallo ich lese mit einer methode meiner Klasse eine Datei ein.
Datei wird in einen String gespeichert.

ich würde gerne aber nur den wichtigen inhalt der datei lesen um speicher zu sparen.


Code:
bool mp3::readFile(string dateiname) {
    string fileBin = "";

    ifstream file;
    file.open(dateiname.c_str(),ios::binary);
    if(!file) {
        return false;
    }
    
    for(int i = 0;!file.eof();i++) {
        fileBin += file.get();
    }

    file.close();
    return readcontent(fileBin);
}



Also der wichtige inhalt wären die letzten 128 byte.
Kann man das einfach abändern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.12.2007, 12:31 Uhr
xXx
Devil


hmm ...

C++:
bool mp3::readFile(std::string const & file_name)
{
    std::ifstream file_stream(file_name.c_str(), std::ios_base::binary);
    if (!file_stream) throw std::invalid_argument("file not exists");

    file_stream.seekg(-128, std::ios_base::end);
    return read_content(std::string(std::istream_iterator<char>(file_stream), std::istream_iterator<char>()));
}
wobei das wichtige das seekg ist. das mit den istream_iterator ist nur eine sicherere und mehr c++-like version die Daten einzulesen ...

Dieser Post wurde am 23.12.2007 um 12:31 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.12.2007, 11:36 Uhr
~Franz
Gast


das mit dem seekg versteh ich.
Könnste du mir des:

C++:
std::string(std::istream_iterator<char>(file_stream), std::istream_iterator<char>())


mal noch genauer erklären? Versteh des net so ganz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.12.2007, 13:54 Uhr
xXx
Devil


Also es wird der Konstruktor von std::string mit Iteratoren aufgerufen ...
www.cppreference.com/cppstring/string_constructors.html

C++:
  string( input_iterator start, input_iterator end );

Tjo und ich weiß nicht ob du dich mit "input-iteratoren" auskennst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.12.2007, 16:32 Uhr
~Franz
Gast


Eigentlich garnet.....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: