Manipulation de mots d'un fichier texte (getline + strtok)

trueark

Nouveau membre
Bonjour à tous :)

Je souhaiterai ouvrir un fichier texte en C++ (programmeEtape4.txt) et lire les lignes une à une. Pour chaque ligne, j'aimerai séparer les mots (ce que je fais à l'aide de la fonction strtok) et les écrire un par un avec un retour à la ligne dans le fichier traduction.

Ca vous parrait sans doute très bête et sans intérêt, mais ce n'est pas la finalité de la chose en réalité. J'ai fais un bout de code qui marche avec le strtok et le getline mais uniquement séparément (si je met en commentaire le while avec le getline et que j'initialise le str[] avec une chaine quelconque comme "salut copain", et dans le cas du getline seul, si je ne fais que recopier le contenu de programmeEtape4 dans traducteur ligne par ligne).

Donc mon soucis, comment les faire fonctionner ensemble, main dans la main en douce harmonie ?

Le soucis ici est un probleme de conversion de void* à char** mais comme ça, ça me parle pas trop...

Si vous avez une idée de modification de mon code qui pourrait marcher, ou m'en proposer carrément un autre, n'hésitez pas, je suis preneur !

Merci d'avance pour votre aide, les ainés ;)

Ark

PS : voici le code, ca peut aider :D




fstream traduction("traduction.txt",ios_base::in|ios_base::out|ios_base::trunc);
std::ifstream fichier( "programmeEtape4.txt" );
char*mot;
char str[]= " ";
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{

while ( getline(fichier,str) )// cette boucle s'arrête dès qu'une erreur de lecture survient
{
mot=strtok(str," \n\r\0");
while(mot)
{
traduction << mot << endl;
mot=strtok(NULL," \n\r\0");
}
}
}
traduction.close();
 

trueark

Nouveau membre
Oups, désolé :s

[cpp]fstream traduction("traduction.txt",ios_base::in|ios_base::out|ios_base::trunc);
std::ifstream fichier( "programmeEtape4.txt" );
char*mot;
char str[]= " ";

if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
while ( getline(fichier,str) )// cette boucle s'arrête dès qu'une erreur de lecture survient
{
mot=strtok(str," \n\r\0" );
while(mot)
{
traduction << mot << endl;
mot=strtok(NULL," \n\r\0" );
}
}
}
traduction.close(); [/cpp]
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 079
Membres
1 586 395
Dernier membre
franckorus
Partager cette page
Haut