begin process at 2012 02 10 20:15:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Fichier & Disque

 > 

Pb ecriture dans un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb ecriture dans un fichier

mercredi 31 octobre 2007 à 16:10:05 | Pb ecriture dans un fichier

Zakata

Bonjour à tous,

Je suis en train de programmer une classe Logger qui me permettra de debugger mes programmes. J'ai un petit soucis sur l'écriture de données dans mon fichier. voici mon code :

Logger.h
class Logger{
public:
    Logger(const string FilName="OutPut.log");
    Logger(const Logger&){};
    ~Logger();

    void Log(const string& Msg);
    template <class T>
    Logger& operator <<(T &ToLog);

protected:
    ofstream m_File;
};
template <class T>
Logger &Logger::operator <<(T &ToLog)
{
    std::ostringstream Stream;
    Stream << ToLog;
    Log(Stream.str());

    return *this;
}

Logger.cpp
[...]
void Logger::Log(const string& Msg)
{
    m_File<<Msg;
}
[...]

Le probleme c'est que le fichier est vide que je fasse Log<<"Message" ou Log.Log("Message") dans la fonction main.
 J'ai executé le programme en pas à pas et à la ligne : m_File<<Msg, le message existe et est corecte. Si je remplace cette ligne par m_File<<Msg<<endl; a ce moment, le fichier est bien écrit.

Voila quelqu'un aurait il une idée sur ce qui se passe ?
Merci
Damien

NB: je suis sous linux (ubuntu) ca à peut être une influence.

*Les fautes d'orthographes jointes à la présente missive, sont la propriété exclusive de l'auteur. Toute copie illégale pourra être passive de poursuites judiciaires, et soumises à des peines et sanctions exemplaitres
mercredi 31 octobre 2007 à 17:38:26 | Re : Pb ecriture dans un fichier

luhtor

Réponse acceptée !
C'est justement l'intéret de la classe Ofstream, c'est de bufferiser les écritures.
m_File << Msg << std::flush; <= si tu tiens absolument à ce que le fichier soit écrit immédiatement.

En l'absence de flush ou endl, le fichier sera écrit lorsque l'objet "m_File" le jugera nécessaire.
mercredi 31 octobre 2007 à 18:11:56 | Re : Pb ecriture dans un fichier

Zakata

Génial merci beaucoup.

En fait si j'en ai besoin cest pour que je puisse choisir le moment ou faire le retour à la ligne. Par exemple :

Log<<"Message "<<Variable<< "Message"... je ne voulais pas qu'un retour à la ligne se fasse à chaque fois.

encore Merci et à plus
Damien

*Les fautes d'orthographes jointes à la présente missive, sont la propriété exclusive de l'auteur. Toute copie illégale pourra être passive de poursuites judiciaires, et soumises à des peines et sanctions exemplaires
vendredi 2 novembre 2007 à 01:27:05 | Re : Pb ecriture dans un fichier

KeniiyK

Membre Club
Encore mieux :
Utiliser la spécialisition des templates :
const Logger &Logger::operator <<(const T &ToLog) const // en const c'est mieux, mais faire pour que le const n'impacte pas ton  objet, il reste le "mutable"
et
const Logger& Logger::operator <<(const Logger& ToLog) // pour ton logger, "mutable" ?

:D
vendredi 2 novembre 2007 à 18:32:35 | Re : Pb ecriture dans un fichier

Zakata

J'ai pas trop compris, je vois ce qu'est la spécialisation des templates, mais pourquoi l'utiliser dans mon cas ? Pour choisir le moment de l'écriture dans le fichier ?


*Les fautes d'orthographes jointes à la présente missive, sont la propriété exclusive de l'auteur. Toute copie illégale pourra être passive de poursuites judiciaires, et soumises à des peines et san
samedi 3 novembre 2007 à 17:06:46 | Re : Pb ecriture dans un fichier

luhtor

La spécialisation n'aurait d'intéret que pour les types qui ne sont pas gérés par les stream de la STL (auquel cas, il suffirait de définir l'opérateur << et >>).

Pour le coup du "mutable", en général un logger est un singleton ou pas loin et donc on s'amuse pas a balader des instances constantes, donc perso, j'éviterais de définir les fonctions "const". Le coup du "mutable" ou du "const_cast", c'est quand meme pas clean clean. Ca doit etre réservé aux objets particuliers du style "mutex", etc...


Cette discussion est classée dans : fichier, string, log, const, logger


Répondre à ce message

Sujets en rapport avec ce message

Renommer un fichier [ par mindark ] Bonjour, j'essaie tout betement de renommer un fichier a l'aide des api, mais ca ne marche pas !Je veux renommer "kk.txt" en "qq.txt"String ancien="C: conversion d'un string [ par bastiente ] Ba$t :bonjour... Voila je travaille sur un fichier ou figure la valeur : 32 989,88Je dois la retourner dan un autre fichier. Ca c'est fait, mai je doi ecrire dans un fichier [ par bellionl ] salut,voila depuis une semaine je tente de conprendre le c++ avec borland c++ builderle problème est quand je veut écrire dans un fichier.création du rechercher une string dans un fichier sous windows [ par doudblast ] voilà : l'idée est de récuperer une ip dans un fichier txtpar contre cette ip ne sera pas toujours la même et ne sera pas toujours précisemment au mêm Ouvrir et lire un fichier texte en C++.net [ par Eels ] Voila j'aimerais ouvrir un fichier texte qui se presente sous cette forme:NumPort Nom du trojanNumPort2 Nom du trojan 2En fait, je fais un scanner de lire un fichier et le stocker dans une variable [ par sevay ] Bonjour à tous,J'ai quelques notions en C/C++ et travaille dans un environement Visual c++ 6.Mon problème est que je voudrais lire un fichier dont le Erreur d'ouverture du même fichier plusieurs fois de suite [ par TheRedman ] Je développe mon programme sous linux et cette fonction me pose problème. En fait, j'ai dans un répertoire "utilisateurs" des fichiers dont la structu Récupérer une chaine dans un fichier texte [ par alncool ] En fait je dispose d'une classe avec trois attributs de type string. J'ai réalisé une surcharge de l'opérateur << pour pouvoir écrire dans un fichier String table et fichier texte [ par Marsin ] Bonjours, je cherche comment ecrire le contenu d'un fichier texte dans une string table. le but c de rendre une application multilanguage, le soft doi Lecture fichier ini avec GetProfileString [ par PsyCaDi ] Bonjour,Je suis en train de faire un petit code et j'aimerai enregsitrer mes paramètres dans un fichier ini.Mais j'ai quelques problèmes (car je suis


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales