Remplir un string, probleme

cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009 - 20 avril 2005 à 22:54
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007 - 23 avril 2005 à 12:41
Bonjour,


Je suis en 1ere année de BTS info.


J'ai un projet a realiser pendant ces vancances : une bibliotheque.


J ai un ptit probleme lors de l utilisation de "string". (lors de la saisie de texte)




si je declare une string comme :




string titre;


cin >> string;




Je ne peux pas taper d'espace (donc pour un titre c est genant).
Mais sans espace mon programme marche.



pareil avec la commande :


std::getline (cin, titre);


qui me fait un peu tout bugger (il prend le caractere espace comme une fin de saisie).




Comme c'est assez difficile d expliquer, j ai uppé mon projet :

[http://thibault33.free.fr/Dossier%20Partag%e9/Bibliotheque.rar http://thibault33.free.fr/Dossier% [...] theque.rar]




il n'est pas totalement fini (manque de commentaires)


Si vous voyez comment resoudre se probleme


merci d avance.




ps: je ne sais pas si le probleme de mon code vient specialement de la.
Si vous pouviez compiler mon code pour voir. J'utilise VC++6



code ou ca ne va pas :


<li>string auteur;
</li><li> string titre;
</li><li>


</li><li> cout << "Titre : ";
</li><li> std::getline(std::cin,titre);
</li><li>


</li><li> cout << "Auteur : ";
</li><li> std::getline(std::cin,auteur);
</li><li>


</li><li>


</li><li> switch (touche) </li><li> {
</li><li> case 1 : {
</li><li> unsigned nombrePages;
</li><li> cout << "Nombre de pages : ";
</li><li> std::cin >> nombrePages;
</li><li> documents.push_back(new Livre(auteur, titre, nombrePages));
</li><li> }
</li><li> break;</li>

7 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 avril 2005 à 23:43
Deja, ya un truc qui me parait louche. "documents" c'est une liste ?

SI c'est le cas, ca me fait peur ca:

documents.push_back(new Livre(auteur, titre, nombrePages));



Peut etre que c'est moi qui reve, mais tu devrais plutot mettre;


documents.push_back(Livre(auteur, titre, nombrePages));



sauf si ta liste est composé de pointeur, mais ca m'étonnerait que tu es fait ca .



Sinon chez moi, il prend bien la ligne entière.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 avril 2005 à 00:25
Oublie ce que j'ai dis, c'est bien un vector de pointeur que tu as
défini. Et d'ailleurs pourquoi avec utiliser un vector plutot qu'une
list ? (meme si c'est pas la question)
0
cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
21 avril 2005 à 00:29
c est le sujet qui demande un vector :)

ah tu testé mon programme ? compilation puis test.
peu etre que c est mon logiciel qui bug

teste en mettant des espaces dans le titre et l auteur.
merci
0
cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
21 avril 2005 à 01:06
bon j ai modifié le tout pour que ca marche.
je dois terminer ma saisie par un point et c bon :

std::getline(std::cin,titre,'.');

a la detection du point, la saisie s arrete.
Ce qui est bizar c est que quand je mets :
std::getline(std::cin,titre,'\n'); (donc arret apres un retour a la ligne)
ca ne marche pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 avril 2005 à 01:22
Moi si je mets rien, ca marche, puisque par défaut, getline attend le retour à la ligne.
std::getline(std::cin,titre).
Ca marche quand je n'inclue que iostream et string, je sais pas si
sstream peut avoir une influence.


Je compile pas puisque je suis sous Dev moi, donc ca risque pas de marcher. Souvent des problèmes de librairies.
0
cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
21 avril 2005 à 12:55
J ai trouvé d ou venez le probleme.
J utilise VC6 avec le dernier SP. Mais la fonction Getline est buggée.
microsoft propose une solution :
http://support.microsoft.com/default.aspx?scid=kb;en-us;240015#appliesto

une fonction aussi utilisée qui marche mal ...
0
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007
23 avril 2005 à 12:41
Essaye ca



char buffer[1024];

string titre;



cout << "Entrer un titre:\t: ";

cin.getline(buffer,1024);

titre = buffer;
0
Rejoignez-nous