Retourner aux forums || Retourner au forum Programmation.c++

Programmation.c++ : Ecrire dans un fichier qui est dans $HOME

Posté par 桃白白 (page perso, ) le 14 novembre 2005
0
Bonjour,

je débute en c++ (et en QT). Je voulais savoir si quelqu'un savait par hasard comment écrire dans $HOME/monfichier ?

Pour le moment je fais

ofstream out("monfichier");
if(!out){
qWarning("File not opened");
exit(-1);
}
out<< "labla"<<\n';
out.close();
system("mv -f monfichier ~/monfichier");

Mais je pense que c'est une facon de faire assez sale. J'avais bien essayé en définissant pathfile=strcat((char *)getenv("HOME"), "monfichier"); et en écrivant dans pathfile, mais ca veut pas.

D'avance merci

> Lire le message (6 commentaires, moyenne: 1,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

meuh

Posté par gc (page perso, ) le 14/11/2005 à 16:13. (lien). Évalué à 1.

Mais je pense que c'est une facon de faire assez sale. J'avais bien essayé en définissant pathfile=strcat((char *)getenv("HOME"), "monfichier"); et en écrivant dans pathfile, mais ca veut pas.

regarde le man de strcat. il faut que le pointeur premier argument soit assez grand pour contenir le résultat final. là tu burrines dans l'environnement, c'est mal.

tu peux utiliser strcat correctement, ou utiliser asprintf, ou regarder ce qu'il existe dans les string C++, ou encore utiliser ce qui est dispo dans QT à ce propos.

  • [^]Re: meuh

    Posté par 桃白白 (page perso, ) le 14/11/2005 à 16:26. (lien). Évalué à 2.

    ou regarder ce qu'il existe dans les string C++

    Effectivement, ca semble etre une bonne solution, j'étais bloqué de ne pas pouvoir écrire dans un fichier dont le nom est défini par un string, mais avec

    std::string filename(pathfile);
    std::ofstream out(filename.c_str());

    que je viens de trouver, ca marche.

    • [^]Re: meuh

      Posté par brouillon () le 14/11/2005 à 18:08. (lien). Évalué à 2.

      en C++ il y a les stringstream qui sont des string avec buffer qui
      permettent la concataination

      exemple :


      int i = 42;
      string brol("toto");
      ostringstream strbuf;
      strbuf << i << " du texte " << brol << " et plein d'autres choses..." ;

      // pour recuperer la string c++
      string truc = strbuf.str();

      // pour recuperer la chaine de caracteres C
      const char* bidule = strbuf.c_str();



      avec ceci tu peux donc tres simplement construire ton path


      PS : l'utilisation de string avec buffer est en fait le comportement caché
      utilisé lors de la concatenation de chaine de caracteres en Java.


    • [^]Re: meuh

      Posté par Luc Hermitte (page perso, ) le 15/11/2005 à 09:21. (lien). Évalué à 1.

      boost.file_system c'est bien aussi pour les manipulations sur les noms de fichiers.

[+] Ca marche, mais c'est sale

Posté par Lalolali () le 14/11/2005 à 16:34. (lien). Évalué à -2.

int main (void)
{
system (echo "blabla">FILE);
return 0)

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++