Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » UNICODE: std::wofstream::write dumm? :D

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
26.09.2007, 15:13 Uhr
xXx
Devil



C++:
void foo::add(const wchar_t* string) const
{
    if (string == NULL || m_filename.empty() == true)throw std::invalid_argument("null-pointer | empty filename");

    std::wofstream file(m_filename.c_str(), std::ios::out | std::ios::binary | std::ios::app);
    if (!file) throw std::runtime_error("could not open file");
    const std::size_t string_length(::lstrlenW(string) + 1);
    file.write(reinterpret_cast<const wchar_t*>(&string_length), sizeof(std::size_t));
    file.write(string, static_cast<std::streamsize>(string_length * sizeof(wchar_t)));

    if (m_pListBox != NULL)    m_pListBox->AddString(string);
}
sollte mir doch eigentlich korrekt sein?!
Dann geht aber das lesen nicht

C++:
void foo::view() const
{
    if (m_filename.empty() == true || m_pListBox == NULL) throw std::invalid_argument("null-pointer | empty filename");

    m_pListBox->ResetContent();

    std::wifstream file_stream(m_filename.c_str(), std::ios::in | std::ios::binary);
    if (!file_stream) throw std::runtime_error("could not open file");
    for (std::size_t n = 0; file_stream.eof() == false && file_stream.fail() == false; ++n)
    {
        std::size_t string_length = 0;
        file_stream.read(reinterpret_cast<wchar_t*>(&string_length), sizeof(std::size_t));
        if (string_length == 0) continue;
        wchar_t* string = new wchar_t[string_length];
        file_stream.read(string, static_cast<std::streamsize>(string_length * sizeof(wchar_t)));
        if (!file_stream) throw std::bad_exception("invalid file");
        m_pListBox->AddString(string);
        delete [] string;
    }
}
ja ok is ne böse Sache wenn man file_stream.eof so nutzt aber das sollte gehen, da ich einfach den Teil überspringen lasse, wenn nichts da steht

WO liegt da der dumme Fehler? Ich ralls nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.09.2007, 20:22 Uhr
xXx
Devil


Keiner nee Idee? Eigentlich sollte das doch so gehen Ich mein ich könnte die Texte auch eigentlich direkt mit operator<< reinschreiben ... aber muss doch auch so gehen?!
 
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: