domidragon
Fleet Admiral
- Dabei seit
- Juli 2008
- Beiträge
- 11.530
Huhu
Ich hab hier ein Problem und zwar ist es der berühmte carriage return
Wir haben erst kürzlich ein Programm fertig gestellt, welches unter Linux und unter Windows laufen soll. Nun das ist nebensache, das Problem ist, dass ich das carriage return in einem File entfernen muss um ein merge vorgang besser zu optimieren. Unter Windows macht er diesen immer und somit zeigt es mir an, als ob ich jedes file komplett geändert hätte nur wegen dem CR.
Daher will ich den schon beim schreiben des Files eliminieren. Einfacher gesagt als getan. Ich hoffe es kann mir einer helfen, bin mit meinem Latein am Ende...
Ich hab folgendes mal versucht, scheint die schnellste und beste Möglichkeit zu sein, zumindest in der Theory, praktisch will das unter Windwos nicht, unter Linux funktioniert das wunderbar -.-
Mit diesem Code kann ich unter Linux das Programm so benutzen:
removeCR < filein > fileout
und dannach sind die CRs weg.
unter Windows versuchte ich es so:
und hab ihm das File(Stream) übergeben und eine Zieldatei.
Kompilieren etc. tut es, die CR sind aber immer noch vorhanden und ich weiss nicht wieso
Hat da Windows wieder eine eigenheit oder was mach ich falsch?
Ja es gibt über Texteditoren Möglichkeiten es zu "convertieren". Brauch es aber als Code im Programm selber, somit nützt mir das nichts
Danke
greez
Ich hab hier ein Problem und zwar ist es der berühmte carriage return

Wir haben erst kürzlich ein Programm fertig gestellt, welches unter Linux und unter Windows laufen soll. Nun das ist nebensache, das Problem ist, dass ich das carriage return in einem File entfernen muss um ein merge vorgang besser zu optimieren. Unter Windows macht er diesen immer und somit zeigt es mir an, als ob ich jedes file komplett geändert hätte nur wegen dem CR.
Daher will ich den schon beim schreiben des Files eliminieren. Einfacher gesagt als getan. Ich hoffe es kann mir einer helfen, bin mit meinem Latein am Ende...
Ich hab folgendes mal versucht, scheint die schnellste und beste Möglichkeit zu sein, zumindest in der Theory, praktisch will das unter Windwos nicht, unter Linux funktioniert das wunderbar -.-
#include <iostream>
#include <algorithm>
#include <iterator>
int main(int argc, char *argv[])
{
std::istreambuf_iterator<char> first(std::cin), last;
std:streambuf_iterator<char> result(std::cout);
std::remove_copy(first, last, result, '\r');
}
Mit diesem Code kann ich unter Linux das Programm so benutzen:
removeCR < filein > fileout
und dannach sind die CRs weg.
unter Windows versuchte ich es so:
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
int main(int argc, char *argv[])
{
std::ifstream input(argv[1]);
std:fstream output(argv[2]);
std::istreambuf_iterator<char> first(input), last;
std:streambuf_iterator<char> result(output);
std::remove_copy(first, last, result, '/r');
}
und hab ihm das File(Stream) übergeben und eine Zieldatei.
Kompilieren etc. tut es, die CR sind aber immer noch vorhanden und ich weiss nicht wieso

Hat da Windows wieder eine eigenheit oder was mach ich falsch?
Ja es gibt über Texteditoren Möglichkeiten es zu "convertieren". Brauch es aber als Code im Programm selber, somit nützt mir das nichts

Danke
greez
Zuletzt bearbeitet: