C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Nom de fichier numerote

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Fanny Chevalier
Guest





PostPosted: Thu Jul 22, 2004 8:57 am    Post subject: Nom de fichier numerote Reply with quote



Bonjour,

Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include <strstream>

for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers
ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?
(hormis char *, je veux rester avec string)

Merci par avance,
Fanny

Back to top
David Geldreich
Guest





PostPosted: Thu Jul 22, 2004 11:04 am    Post subject: Re: Nom de fichier numerote Reply with quote



Bonjour Fanny,

Fanny Chevalier wrote:
Quote:
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers
ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?

Il manque le marqueur de fin de chaine:

s << "file_" << i << ".txt" << ends;

A suivre...

Back to top
Spoofix
Guest





PostPosted: Thu Jul 22, 2004 11:05 am    Post subject: Re: Nom de fichier numerote Reply with quote




"Fanny Chevalier" <chevalie (AT) labri (DOT) fr> a écrit dans le message de
news:cdo207$svr$1 (AT) news (DOT) u-bordeaux.fr...
Quote:
Bonjour,

Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers
ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?
(hormis char *, je veux rester avec string)

Mettre s << "file_" << i << ".txt"<


Back to top
Falk Tannhäuser
Guest





PostPosted: Thu Jul 22, 2004 11:22 am    Post subject: Re: Nom de fichier numerote Reply with quote

Fanny Chevalier wrote:
Quote:

Bonjour,

Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include <strstream

for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";

Ici, il manque ' << ends' à la fin, afin d'insérer '' pour terminer
la chaîne de caractères.

Quote:
string file = s.str();
ecrireFichier(file);
}
cependant strstream a l'air d'etre une en-tete
un peu vieillote et mes noms de fichiers
ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de
code pour avoir des noms de fichiers corrects?

#include #include <iomanip>

for(unsigned i=0; i {
std::ostringstream os;
os << "file_" << std::setfill('0') << std::setw(2) << i << ".txt";
ecrireFichier(os.str());
}

Falk

Back to top
drkm
Guest





PostPosted: Thu Jul 22, 2004 12:03 pm    Post subject: Re: Nom de fichier numerote Reply with quote

Fanny Chevalier <chevalie (AT) labri (DOT) fr> writes:

Quote:
#include <strstream

for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

Si je me souviens bien, tu dois utiliser std::strstream::freeze()
avant d'accéder à la chaîne, ce dont tu n'as pas besoin avec
std::stringstream. As-tu des raisons d'utiliser std::strstream plutôt
que std::stringstream ?

#include #include <sstream>

for ( int i = 0 ; i < nbreFichiers ; ++ i ) {
stringstream s ;
s << "file_" << std::setw( 2 ) << i << ".txt" ;
ecrireFichier( s.str() ) ;
}

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Back to top
Fanny Chevalier
Guest





PostPosted: Thu Jul 22, 2004 12:13 pm    Post subject: Re: Nom de fichier numerote Reply with quote


Quote:

Si je me souviens bien, tu dois utiliser std::strstream::freeze()
avant d'accéder à la chaîne, ce dont tu n'as pas besoin avec
std::stringstream. As-tu des raisons d'utiliser std::strstream plutôt
que std::stringstream ?

#include #include
for ( int i = 0 ; i < nbreFichiers ; ++ i ) {
stringstream s ;
s << "file_" << std::setw( 2 ) << i << ".txt" ;
ecrireFichier( s.str() ) ;
}

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html


Pas de raisons d'utiliser strstream : c'est ce que j'avais trouve sur le

net...
J'ai remplace par des stringstream et ai ajoute ends, ca fonctionne tres
bien.
Merci


Back to top
Bertrand Motuelle
Guest





PostPosted: Thu Jul 22, 2004 1:45 pm    Post subject: Re: Nom de fichier numerote Reply with quote

Fanny Chevalier <chevalie (AT) labri (DOT) fr> wrote

Quote:
Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include <strstream

for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?

Avec std::stringstream:
#include
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
std::ostringstream s;
s << "file_" << i << ".txt";
std::string file = s.str();
ecrireFichier(file);
}

Pour info, avec strstream il faut prendre un peu plus de précautions:
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
std::ostrstream s;
s << "file_" << i << ".txt" << std::ends;// Marque la fin de chaîne

std::string file = s.str(); // str() retourne un char*
// et te donne la responsabilité
// de désallouer ce buffer.

s.rdbuf()->freeze(0); // Retourne au stream la
// responsabilité du buffer.
// Sans ca, (c.f. ton code)
// tu as une fuite mémoire.
ecrireFichier(file);
}

Bertrand.

Back to top
heinquoi
Guest





PostPosted: Thu Jul 22, 2004 4:20 pm    Post subject: Re: Nom de fichier numerote Reply with quote

"Fanny Chevalier" <chevalie (AT) labri (DOT) fr> a écrit dans le message de
news:cdo207$svr$1 (AT) news (DOT) u-bordeaux.fr...
Quote:
Bonjour,

Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers
ont des caracteres bizarre apre le .txt...

deja eu le probleme, strstream ne semble pas s'occuper du '' terminal des
chaine de caractère ( normal c'est un flux!)
m'on problème à ete résolu en rajoutant un '' à la fin du strstream pour
pouvoir le reutilisé ensuite comme une chaine finissant par
cela donne
s << "file_" << i << ".txt" << '';



Quote:
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?
(hormis char *, je veux rester avec string)

Merci par avance,
de rien, j'espère avoir pu aidé !


--
Cordialement,
Heinquoi



Back to top
heinquoi
Guest





PostPosted: Thu Jul 22, 2004 4:29 pm    Post subject: Re: Nom de fichier numerote Reply with quote



--
Cordialement,
Heinquoi
"Spoofix" <xxx (AT) xxx (DOT) xxx.invalid> a écrit dans le message de
news:cdo6sj$65v$1 (AT) apollon (DOT) grec.isp.9tel.net...
Quote:

"Fanny Chevalier" <chevalie (AT) labri (DOT) fr> a écrit dans le message de
news:cdo207$svr$1 (AT) news (DOT) u-bordeaux.fr...
Bonjour,

Je cherche a ecrire dans des fichiers dont le nom est genere au moyen
d'un compteur :
file_01.txt
file_02.txt
file_03.txt
etc...

j'ai utilise le code suivant :

#include
for (unsigned int i = 0 ; i < nbreFichiers ; i++)
{
strstream s;
s << "file_" << i << ".txt";
string file = s.str();
ecrireFichier(file);
}

cependant strstream a l'air d'etre une en-tete un peu vieillote et mes
noms de fichiers
ont des caracteres bizarre apre le .txt...
Avec quoi dois-je remplacer cette portion de code pour avoir des noms de
fichiers corrects?
(hormis char *, je veux rester avec string)

Mettre s << "file_" << i << ".txt"< endl ne met pas un caractère de fin de chaine, mais un caractère de retour

à la ligne. Cela semble fonctionner, mais en faite uniquement si ta fonction
d'ouverture-creation fichier ne prend que la 1ere ligne. En essayant avec un
cout pour afficher cette string tu auras des surprises...ta 1ere ligne seras
bien mais tes smocks serons sur la ligne suivante.
je te conseille donc un
s << "file_" << i << ".txt" << ''.

--
Cordialement,
Heinquoi



Back to top
drkm
Guest





PostPosted: Thu Jul 22, 2004 5:42 pm    Post subject: Re: Nom de fichier numerote Reply with quote

"heinquoi" <nospam*heinquoi1 (AT) libertysurf (DOT) fr> writes:

Quote:
s << "file_" << i << ".txt" << ''.

s << "file_" << i << ".txt" << std::ends ;

comme il a été dit par ailleurs, et que j'ai oublié de préciser dans
ma réponse. L'effet est s.put('').

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Back to top
Loïc Joly
Guest





PostPosted: Thu Jul 22, 2004 6:09 pm    Post subject: Re: Nom de fichier numerote Reply with quote

Fanny Chevalier wrote:

Quote:


Si je me souviens bien, tu dois utiliser std::strstream::freeze()
avant d'accéder à la chaîne, ce dont tu n'as pas besoin avec
std::stringstream. As-tu des raisons d'utiliser std::strstream plutôt
que std::stringstream ?

#include #include
for ( int i = 0 ; i < nbreFichiers ; ++ i ) {
stringstream s ;
s << "file_" << std::setw( 2 ) << i << ".txt" ;
ecrireFichier( s.str() ) ;
}

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html


Pas de raisons d'utiliser strstream : c'est ce que j'avais trouve sur le
net...
J'ai remplace par des stringstream et ai ajoute ends, ca fonctionne tres
bien.

Si tu as remplacé par stringstream, tu n'as pas besoin de ends. Je
dirais même qu'il pourrait être faux de l'ajouter. Regarde par exemple
la taille d'un "file_01.txt" obtenue par cette méthode et celle de la
constante "file_01.txt".

--
Loïc


Back to top
heinquoi
Guest





PostPosted: Thu Jul 22, 2004 10:53 pm    Post subject: Re: Nom de fichier numerote Reply with quote

"drkm" <usenet.fclcxx (AT) fgeorges (DOT) org> a écrit dans le message de
news:wkoem8547g.fsf (AT) fgeorges (DOT) org...
Quote:
"heinquoi" <nospam*heinquoi1 (AT) libertysurf (DOT) fr> writes:

s << "file_" << i << ".txt" << ''.

s << "file_" << i << ".txt" << std::ends ;

comme il a été dit par ailleurs, et que j'ai oublié de préciser dans
ma réponse. L'effet est s.put('').

tout a fait.
la définition de ends est:
_CRTIMP inline basic_ostream&
__cdecl ends(basic_ostream<char, char_traits& _O)
{_O.put('');
return (_O); }
donc effectivement un s.put ('').
c'est comme on veut !

--
Cordialement,
Heinquoi



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.