Flux désynchronisé comment régler ca?

Flux désynchronisé comment régler ca? - C++ - Programmation

Marsh Posté le 27-12-2004 à 13:00:10    

Bonjour à tous
 
je sèche..
j'aimerais savoir comment accepter "Jean"  "Van Den Bigelaar" dans une variable string.
           
 
en faisant
cout << " entrez votre nom " << endl;
 cin >> nomClient;
cout << " entrez votre prenom"<<endl;
 cin >> PrenomClient;

 
ca ne marche pas correctement.
il encode je ne sais quoi dans le nom et puis il ne me demande meme pas le prénom avec le cin.
il doit y avoir une desynchronisation du flux !
comment faire pour régler ce prob des espaces a l'encodage svp ??


Message édité par fullnight le 28-12-2004 à 01:46:45
Reply

Marsh Posté le 27-12-2004 à 13:00:10   

Reply

Marsh Posté le 27-12-2004 à 14:01:51    

cin.getline()

Reply

Marsh Posté le 27-12-2004 à 14:15:57    

ca ne marche pas avec les strings mais avec les char *
 
j'ai déja essayé ,ca ne change rien
esaye toi meme

Reply

Marsh Posté le 27-12-2004 à 14:45:22    

Code :
  1. std::string a ;
  2. cout << "a : " ;
  3. getline(cin,a,'\n');
  4. cout << a ;

Reply

Marsh Posté le 27-12-2004 à 23:00:06    

ca ne marche tj pas !
pour encoder il faut taper 2x sur enter !!
il enregistre ce qu'il y'a AVANT le enter     dans nomClient
il enregistre ce qu'il y'a APRES le enter dans prenomClient
il refuse le second getline !!!!!! :'(
 
 
#include <iostream>
#include <string>
using namespace std;
int main()
{
 string nomClient,prenomClient;
 
 cout<<"nom client"<<endl;
     getline(cin,nomClient,'\n');
 
  cout << nomClient<<endl;
 
 cout<<"prenom client"<<endl;
 getline(cin,prenomClient,'\n');
 cout<< prenomClient<<endl;
 
 return EXIT_SUCCESS;
}


Message édité par fullnight le 27-12-2004 à 23:23:15
Reply

Marsh Posté le 27-12-2004 à 23:17:30    

le dernier argument de getline est optionnel

Reply

Marsh Posté le 27-12-2004 à 23:24:35    

donc?

Reply

Marsh Posté le 27-12-2004 à 23:31:09    

donc pas la peine de le mettre

Reply

Marsh Posté le 27-12-2004 à 23:33:46    

moi je veux un délimiteur.
 
et surtout régler ce probleme de désynchronisation

Reply

Marsh Posté le 27-12-2004 à 23:35:55    

putain, je te dis que le délimiteur par défaut de getline c'est '\n' ... t'es pas sorti

Reply

Marsh Posté le 27-12-2004 à 23:35:55   

Reply

Marsh Posté le 27-12-2004 à 23:39:22    

putain, je veux régler le vrai probleme pas savoir si une chose est optionnelle car ca ne m'avance pas

Reply

Marsh Posté le 27-12-2004 à 23:41:50    

MAIS Y A AUCUN PROBLEME

Reply

Marsh Posté le 27-12-2004 à 23:43:04    

je te jure que le compilateur fait pas ce que je demande !
 
il désynchronise le flux dirait on !
 
car je dois taper 2x sur enter pour encoder le nomClient !
 
(j'ai enlevé tout les délimiteurs pourtant)

Reply

Marsh Posté le 27-12-2004 à 23:43:44    

a quoi est du ce problème?
sur certaines machines il me fait le coup

Reply

Marsh Posté le 27-12-2004 à 23:45:41    

tu utilises quoi ?

Reply

Marsh Posté le 27-12-2004 à 23:46:23    

je fais un  
 
cout << nomClient << " crasse: "<< cin.peek() << (char)cin.get();
 
pour voir la crasse qui traine
et c'est    --> 10
je ne sais pas d'ou sort ce 10

Reply

Marsh Posté le 27-12-2004 à 23:46:45    

j'employe microsoft visual c++

Reply

Marsh Posté le 27-12-2004 à 23:59:15    

change de compilateur

Reply

Marsh Posté le 28-12-2004 à 00:01:05    

ok
il est po bien?

Reply

Marsh Posté le 28-12-2004 à 00:08:13    

ben tu vois bien qu'il merde

Reply

Marsh Posté le 28-12-2004 à 00:11:03    

je sais pas si c la faute du compilo
je demandais  c tout

Reply

Marsh Posté le 28-12-2004 à 00:17:01    

c'est la faute de ta bibliothèque qui va avec ton compilo

Reply

Marsh Posté le 28-12-2004 à 00:17:45    

j'essaye de compiler mon fichier avec dev c++
mais il me dit unable to run program file

Reply

Marsh Posté le 28-12-2004 à 00:30:25    

normal

Reply

Marsh Posté le 28-12-2004 à 00:33:41    

pourquoi ?
aide moi si tu sais

Reply

Marsh Posté le 28-12-2004 à 00:34:22    

vire ton return à la fin

Reply

Marsh Posté le 28-12-2004 à 00:37:13    

j'ai choppé ca sur un site mais ca m'aide pas
 
 
 
Note : Remarquez que le caractère de saut de ligne étant lu, il est nécessaire de saisir deux retours de chariot successifs pour que la méthode getline renvoie son résultat. Comme pour toutes les méthodes de lectures formatées, ce caractère interrompt la lecture dans le flux d'entrée standard du programme et se trouve donc encore dans le tampon d'entrée lors de la lecture suivante. Cela explique que dans le cas de lectures successives, il faut extraire ce caractère du flux d'entrée manuellement, par exemple à l'aide de la méthode get. C'est ce que cet exemple réalise sur sa dernière ligne pour l'envoyer sur le flux de sortie standard.  
 

Reply

Marsh Posté le 28-12-2004 à 00:38:26    

g viré le return
ca ne change rien
il me dit tj unable to run program file
pas moyen de le compiler et de le runer

Reply

Marsh Posté le 28-12-2004 à 00:39:44    

DTC

Reply

Marsh Posté le 28-12-2004 à 00:45:28    

traduction? c quoi DTC
Danish Touringcar Championship  ?

Reply

Marsh Posté le 28-12-2004 à 00:58:25    

bon j'ai mis dev ++ 4
cette fois il compile
mais c tj le meme problème !
il demande 2 enter pour le 1er getline (1er string)
 
et il demande 1 enter pour le 2 eme getline mais n'affiche pas la valeur du second string

Reply

Marsh Posté le 28-12-2004 à 01:09:33    

mon oeil

Reply

Marsh Posté le 28-12-2004 à 01:11:25    

fullnight a écrit :

traduction? c quoi DTC
?


Dans Ton Cul...

Reply

Marsh Posté le 28-12-2004 à 01:41:54    

chut toi
 
HELP
 
one miracle please !!
 
COMMENT FAAAAAAAIIIIIIIIIIIIREEEEEEEEEEEEEEEEEEEE
ce flux est désynchronisé !


Message édité par fullnight le 28-12-2004 à 01:45:50
Reply

Marsh Posté le 28-12-2004 à 01:54:40    

non, il est pas désynchronisé, c'est toi qui sait pas où est ta touche [Entrée]. pAr définition, cin et cout sont synchronisé. Ca va faire 10ans que des gens font des cout/getline/cout, et toit tu viens nous expliquer que ça marche pas : le problème, c'est toi.
Moi je joue avec ça chez moi
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. int main()
  4. {
  5.   std::string a, b;
  6.   std::cout << "a : ";
  7.   std::getline(std::cin, a);
  8.   std::cout << "b : ";
  9.   std::getline(std::cin, b);
  10.   std::cout << '"' << a << '"'
  11.     << '\n'
  12.     << '"' << b << '"'
  13.     << '\n';
  14. }

et ça marche du tonnerre.

Reply

Marsh Posté le 28-12-2004 à 02:12:23    

http://membres.lycos.fr/zonefullnight/la_preuve.JPG


Message édité par fullnight le 28-12-2004 à 02:13:03
Reply

Marsh Posté le 28-12-2004 à 02:13:48    

putain de compilo
 
microsoft hein :@ :fou:


Message édité par fullnight le 28-12-2004 à 02:18:13
Reply

Marsh Posté le 28-12-2004 à 02:16:51    

enfin il marche avec dev c++
finalement c pas trop tôt un résultat ca fait du bien!
merci !
 
putain j'ai tout un projet avec une 30 aine de fichiers
 
a balancer d'un compilo a l'autre maintenant.
mh ah lala


Message édité par fullnight le 28-12-2004 à 02:19:23
Reply

Marsh Posté le 28-12-2004 à 10:35:01    

Comment régler ça ?  
 
Bah passer à un compilo qui a moins de 10 ans. La STL qui est dans VS6 est la même que celle de VS5, c'est dire si elle date. Donc soi tu passes à VC++7.1 (qui est GRATUIT), soit tu corriges les bugs de ta STL qui sont connus depuis la nuit des temps.
 
http://www.dinkumware.com/vc_fixes.html
(rubrique istream).

Reply

Marsh Posté le 31-12-2004 à 00:42:45    

toi tu as cartonné :-)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed