Pages : 1
#1 Le 28/10/2008, à 19:00
- Kranagard
[c++] probleme de getline()
je cherche depuis un petit moment et je trouve des solutions mais le probleme viens de la. je trouve DES solutions et pas une qui tourne
je cherche a encoder en console une chaine de caractere pouvant contenir des espaces. j'ai essayé:
-cin.getline(str)
-getline(cin,str)
et autres variantes (str etant un string).
le hic c'est que dans aucun cas l'appel est blocant sauf si je rajoute un parametre:
getline(cin,str,'\n')
dans ce cas l'appel est bloquant mais quel que soit la chaine rentrée il ne passe pas a la suite et attend son caractere '\n'...
je suis sous kde3 hardy mais je ne pense pas que ça puisse venir de la connaissant le c.
donc si quelqu'un a une idée pour que je recupere ma ligne complete je suis preneur
Hors ligne
#2 Le 28/10/2008, à 19:23
- nicolas66
Re : [c++] probleme de getline()
Testé sous Hardy + gcc 4.2.4 :
#include <iostream>
#include <string>
int main( int argc, char ** argv )
{
std::string str;
std::getline(std::cin, str);
std::cout << str << std::endl;
return EXIT_SUCCESS;
}
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#3 Le 28/10/2008, à 19:30
- Kranagard
Re : [c++] probleme de getline()
c'est exactement mon code sauf que j'ai un namespace std et donc pas de std::
mais ça bloque pas a l'appel...
Hors ligne
#4 Le 28/10/2008, à 20:54
- nicolas66
Re : [c++] probleme de getline()
Super bizarre car chez moi le programme bloque pour saisir une chaîne avec ou sans espaces. Tu compiles bien avec :
g++ test.cpp -o test -Wall
?
Dernière modification par nicolas66 (Le 28/10/2008, à 20:55)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#5 Le 28/10/2008, à 21:06
- Link31
Re : [c++] probleme de getline()
Ton flux std::cin est-il en état d'accepter des entrées utilisateur ? Si l'utilisateur a entré une valeur invalide précédemment, il faut le remettre à zéro avec :
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Hors ligne
#6 Le 30/10/2008, à 12:35
- Kranagard
Re : [c++] probleme de getline()
merci link31, j'avais fais le cin.clear() mais pas le ignore.
il supprime le \n que le clear laisse dans le stdin si j'ai bien compris?
en tout cas maintenant ça fonctione parfaitement.merci a vous 2
Hors ligne
Pages : 1