Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anfänger: Öffnen und Speichern von Strings klappt nicht

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 ] [ 2 ] > 3 < [ 4 ]
020
17.08.2003, 14:01 Uhr
~pmw
Gast



Zitat:
Oliver Müller postete

C++:
ofstream ausgabe(outputfile.c_str(),ios::binary);
ausgabe << data;



Das funktioniert aber nicht. So bekomme ich immer nur die 1. Zeile.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
17.08.2003, 14:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mit ausgabe << data;
kriegste immer nur die erste Zeile...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
17.08.2003, 14:08 Uhr
Oliver
S2-Pixelgeneral


so:


C++:
ausgabe.write(data,strlen(data));


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
17.08.2003, 14:37 Uhr
virtual
Sexiest Bit alive
(Operator)


@flosoft
Noch schlimmer: nur das erste Wort!

@Oliver
die idee mit dem write ist zwar ganz nett, aber die Idee mit dem strlen(data) nicht. Das geht eher mit

C++:
ausgabe.write(data.c_str(), data.length());


Beim lesen dann zB (ungetestet):

C++:
std::string data;
...
while (eingabe)
{
      char buffer[100];
      eingabe.read(buffer, sizeof(buffer));
      data += std::string(buffer, eingabe.gcount());
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
17.08.2003, 16:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


@virtual, in seinem fall scheinbar nur die erste zeile, wenn eben kein leerzeichen in der zeile ist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
17.08.2003, 18:25 Uhr
Pablo
Supertux
(Operator)


Wie wär's damit?


C++:
#include <stdio.h>

int main()
{
    int c;
    FILE *fto; // file to open
    FILE *ftc; // file to copy
    fto = fopen("datei.txt","r");
    ftc = fopen("copy.txt","w");
    while ((c = fgetc(fto)) != EOF)  
        fputc(c,ftc);    
    
    fclose(ftc);
    fclose(fto);
}



Ich hab bei mir getestet und fubktioniert.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
17.08.2003, 18:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


dafür kann man auch einfach

copy oder so verwenden, gibt es ja (denke) ich auch eine io-funktion dafür
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
17.08.2003, 18:48 Uhr
Pablo
Supertux
(Operator)


Mit fscanf(fto,"%s",line); funktioniert auch.

Aber gibt es auch eine Möglichkeit zu wissen, ob man zum Schluss der Datei angekommen ist, wie EOF?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
17.08.2003, 19:20 Uhr
virtual
Sexiest Bit alive
(Operator)


fscanf gibt als Rückgabe die Anzahl der mit % markierten Formatfelder zurück, die korrekt gelesen wurden. Also gibt fscanf in diesem Fall 1, bei EOF oder Fehler 0 zurück. Zur unterscheidung, ob Fehler oder EOF ist also nachher feof aufzurufen. Etwa so:

C++:
if (fscanf(fto, "%s", line)==1)
{
    ... /* Alles okay */
}else if (feof(fto))
{
  ... /* EOF */
}else
{
  ... IO Fehler
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
17.08.2003, 19:23 Uhr
virtual
Sexiest Bit alive
(Operator)


...nur letztlich frage ich mich, was denn so dolle binär an den Daten ist. Und ob es C oder C++ werden soll.
Ich bin der Meinung, wenn es binär ist, sollte man in C++ auf op>> verzeichten, genauso wie in C auf fsanf
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ 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: