8 votes

Saut de ligne C++ ofstream

Voici mon code :

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream ifile ("input.dat", ios::in);
    ofstream ofile ("output.dat",ios::out);

    int num;
    ifile >> num;
    ofile << num;
    ofile << endl;
    ofile << "Did we go to new line?";
    ofile << endl;

    return 0;
}

Le problème est que tout ce qui se trouve dans output.dat est sur la même ligne. Comment puis-je résoudre ce problème ?

Merci de votre attention !

EDIT : J'utilisais Windows pour voir les fichiers et Linux pour compiler. C'est pourquoi je rencontrais ce problème. Utilisation de cat output.dat du côté de Linux pour voir le contenu du fichier aurait révélé que les sauts de ligne de Windows et de Linux sont différents à ce moment-là.

7voto

Remplacer std::endl con "\r\n" pour obtenir CRLF au lieu de LF.

2voto

thiton Points 21303

Std::endl insère déjà un saut de ligne, vous avez donc des sauts de ligne dans votre fichier. Je suppose que vous générez votre fichier sur un système LF (Linux ou autre système de type UNIX) et que vous le visualisez sur un système CRLF. Dans ce cas, votre saut de ligne n'apparaîtra pas dans l'éditeur de texte comme un saut de ligne. unix2dos est votre ami.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X