cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015
-
30 sept. 2010 à 18:36
cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015
-
1 oct. 2010 à 09:59
bonjour,
j'ai un petit problème avec getline:
j'ai en entrée 2 textes : text comporte 3 lignes et text1 comporte 2 lignes, je veux avoir en résultat:
test
test
test
test
test
test
j'ai écrit ce code:
#include <string>
#include <fstream>
#include
#include <stdlib>
int main()
{ std::string ligne;
std::string ligne1;
std::ifstream in ("text.txt");
std::ifstream in1 ("text1.txt");
while (std::getline (in , ligne)
while (std::getline (in1, ligne1)
std::cout << "test" << std::endl;
system("pause");
return 0;
}
normalement j'aurai le mot test 6 fois (nombre de ligne de text * nombre de ligne de text1)
alors que le code ci-dessus me donne seulement 2 fois (le nombre de lignes de text1)
est ce que c'est normal ce que j'ai eu comme résultat, et pourrais-je faire autrement pour avoir le résultat voulu.
j'espère bien avoir votre aide.
shorzy
Messages postés94Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention 1 juin 2013 30 sept. 2010 à 20:34
Salut les Garcs
while (std::getline (in , ligne))
{
std::cout << ligne << std::endl;
while (std::getline (in1, ligne1))
std::cout << ligne1 << std::endl;
}
Je ne Pense pas que mervat veux faire cela !!!
while (std::getline (in , ligne)
while (std::getline (in1, ligne1)
std::cout << "test" << std::endl;
Tu veux afficher :
cout << "test"
c'est bien ca ?
Il me semble, lorsque ta deuxieme ligne
while (std::getline (in1, ligne1)
fini sa boucle.
Le programme s'arrête, et ce pour une raison simple.
Le flux est terminer !!!!
Lorsque la 1er boucle repart à la charge, la deuxieme boucle sort tout de suite
Essaye donc :
while (std::getline (in , ligne)
{
while (std::getline (in1, ligne1)
std::cout << "test" << std::endl;
in1.clear();
}
clear();
à pour but, de réinitialiser les Flags d'erreur du flux:
Ainsi en attaquant une deuxième, puis une troisième fois ton flux, il ne sera plus considérer comme EOF.
Et ton flux sear relut.
PS:
Il faut certainement également faire un in1.seek(0)
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 30 sept. 2010 à 19:37
Tu ne l'affiche pas, tout simplement !
J'ai juste ajouté un std::cout :)
#include <fstream>
#include
int main()
{
std::string ligne;
std::string ligne1;
std::ifstream in("text.txt");
std::ifstream in1("text1.txt");
while (std::getline (in , ligne))
{
std::cout << ligne << std::endl;
while (std::getline (in1, ligne1))
std::cout << ligne1 << std::endl;
}
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
cs_mervat
Messages postés90Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 6 mars 2015 1 oct. 2010 à 09:59
bonjour,
merci bien pour votre aide et vos réponses rapides,
ce que j'ai voulu exactement c'est d'afficher le mot "test" n fois (n étant le nombre de lignes de text * le nombre de lignes de text1) et pas le contenu des lignes,
j'ai essayé alors ce que shorzy m'a proposé et ca m'a donné le résultat voulu: (sauf que au lieu de seek c'est seekg)
#include <string>
#include <fstream>
#include
#include <stdlib>
int main()
{ std::string ligne;
std::string ligne1;
std::ifstream in ("text.txt");
std::ifstream in1 ("text1.txt");
while (std::getline (in , ligne))
{ in1.seekg(0);
while (std::getline (in1, ligne1))
std::cout << "test" << std::endl;
in1.clear;
}
system("pause");
return 0;
}