Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
Verfasst am: 30.12.2007, 18:51 Titel: TXT Datein Konvertieren |
|
|
Hallo,
Ich hätte mal eine frage. Wenn ich unter Linux programmiere und dann meine ganzen Level usw Textdatein unter Windows einsetzen will gibt es probleme mit dem Zeilenumbruch usw. Da wollte ich fragen ob es nicht ein toll gibt das mir automatisch solche fehler ausbügel? _________________
"Die Codeschleuder" das Spieleprogrammierer Magazin |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
|
Nach oben |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
Verfasst am: 30.12.2007, 20:13 Titel: |
|
|
Die Frage ist wie geht fscanf mit den daten um. Ich habe da nämlich ein Prolbem unter Linux läuft das programm ohne Porlbeme und Windows scheint er irgednie die TXT Datei nicht richitg zu laden. Obwohl es komplet der Selbe Code ist. _________________
"Die Codeschleuder" das Spieleprogrammierer Magazin |
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 30.12.2007, 22:09 Titel: |
|
|
Ich fürchte, du wirst dir ne eigene Implementation von fscanf schreiben müssen...
Weil es ist halt, wie es ist: Linux verwendet nur CR, Win CR-LF. Du wirst entweder die Dateien zu Binärdateien machen und dann auch so öffnen müssen, oder für Win und Linux separate Dateien erstellen.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 30.12.2007, 22:13 Titel: |
|
|
du kannst auch mit streams die dateien im binärmodus öffnen und das jeweiligezeichen als delimiter für std::getline benutzen. dann hast du dir viel arbeit erspart und gleich noch c++ für alten c-style eingebaut.
Gruß DXer |
|
Nach oben |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
Verfasst am: 30.12.2007, 22:23 Titel: |
|
|
Hmm joa das hatte ich mir auch schon überlegt. Muss nur halt wieder etwas code umändern und dann muss ich ja dann noch jeweils eingelsene Zeilen in int convertieren kann mir da evt jemand noch ne elegante lösung sagen? _________________
"Die Codeschleuder" das Spieleprogrammierer Magazin |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 30.12.2007, 22:39 Titel: |
|
|
Schonmal stringstreams benutzt? Damit kann man spielend leicht Strings konvertieren:
CPP: | sstream Stream;
string Text "17 16 15";
int a, b, c;
Stream.str(Text);
Stream >> a >> b >> c;
//a ist gleich 17 und c gleich 15
|
Das mal als kleine Demonstration. Ansonsten wäre bei etwas komplexeren Dateien evtl. XML angebracht, da gibt es auch Parser, die mit den Unterschiedlichen Zeilenende klarkommen sollten.
Ansonsten wäre eine kleine Vereinfachung ja auch:
Code: |
Schwerkraft 1.0f
Sprungkraft 15.0f
Lebensenergie 4
|
Was du mit stringstreams dann ja auch extrem einfach laden kannst. Man sollte auch irgendwie angeben können, dass er bei '=' unterbricht, das wäre noch angenehmer, denke ich. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 31.12.2007, 00:04 Titel: |
|
|
StringStreams gehören zur STL. Ergo sollten sie unter Linux und Win gehen.
Liegen im stl-Namespace. Include-Datei müsste "sstream" sein.
Arg langsam: Sagen wir es mal so: Es gibt keine schnellen String-Operationen.
Die Dinger heißen dann aber std::stringstream nicht std::sstream, aber da bin ich mir nicht 100% sicher. Aber das kann man in der Doku ja nachlesen.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 31.12.2007, 09:35 Titel: |
|
|
Ja sorry, der Header heißt sstream das Ding selber stringstream.
Bei Geschwindigkeit kommt es halt darauf an, was du damit machen willst. Wenn du einen Hochleistungsparser schreiben willst, sind sie vielleicht nicht optimal, aber für alles andere sollte man die heute benutzen. Der Komfort und die Stabilität lohnt sich auf jeden Fall. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
|
Nach oben |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
Verfasst am: 31.12.2007, 11:30 Titel: |
|
|
So sehr schön hab schon einen Teil des Codes umgestellt. Zumindest unter Linux funzt noch alles. Allerdings verwende ich zum umwandeln vom char[] zu int die Funktion "atoi".
Danke nochmal an alle für die schnelle Hilfe _________________
"Die Codeschleuder" das Spieleprogrammierer Magazin |
|
Nach oben |
|
|
|