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 2005je 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).
meuh
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 Sebastien Binet () le 14/11/2005 à 16:37. (lien). Évalué à 3.Quelques pointeurs :
http://doc.trolltech.com/4.0/qdir.html
http://doc.trolltech.com/4.0/qfile.html
(Je ne suis pas un expert Qt mais comme tu as l'air de vouloir t'orienter vers cette bibliothèque portable...)
Et des trucs un peu plus C/C++:
http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html
http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/class(...)
http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC39
Si ça peut aider...
-
[^]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
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++



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.