Conversion string et char, probleme

Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012 - 11 nov. 2009 à 11:42
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 12 nov. 2009 à 11:31
Bonjour,

soit le code suivant, qui convertit une chaine string en char:

#include <string>
#include
#include <cstring>
using namespace std;

int main (){

string combiJoueur1;
cout<<"entrer mot";
cin>>combiJoueur1;

string str =combiJoueur1;
size_t size = str.size() + 1;
char * buffer = new char[ 3];
strncpy( buffer, str.c_str(), 3);
cout << buffer << '\n';
delete [] buffer;


system ("pause");
return 0;
}

le seul probleme que je rencontre c'est que le programme me ressort bien le mot que j'ai rentré mais avec un "-" en plus...(si je rentre joue il me ressort joue-).

Quelqu'un pourrait-il m'aider ?

Merci à ceux qui me donneront un peu de leur temps, merci beaucoup !

7 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 nov. 2009 à 11:53
Heu, à quoi ça sert de faire cela ?

Sinon, pour ton problème, c'est tout simplement que tu essaies de faire rentrer un mot de 4 lettres dans un "char*" qui en possède 2 (2 + 1 pour le zéro terminal).

#include 
#include <cstring>

int main ()
{
  std::string combiJoueur1;

  std::cout << "Entrer mot: ";
  std::cin >> combiJoueur1;

  size_t size = combiJoueur1.size() + 1;
  char* buffer = new char[size];
  strncpy(buffer, combiJoueur1.c_str(), size);
  std::cout << buffer << std::endl;
  delete[] buffer;

  // Qu'est ce qui t'empêche de faire:
  std::cout << combiJoueur1.c_str() << std::endl;

  // Ou mieux encore:
  std::cout << combiJoueur1 << std::endl;

  return 0;
}
0
Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012
11 nov. 2009 à 16:34
en faite je doit faire un programme comme le jeu du mastermind, je voulais donc convertir le string en char pour pouvoir aprés comparer chaque caractére avec la combinaison du joueur 1 par exemple..

Dans tes réponses, je ne comprends pas toujours le code que tu saisie car je ne suis que débutant et je n'utilise pas les mêmes méthodes, un peu de mal des fois à comprendre...desolé
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 nov. 2009 à 16:38
Pour accéder à un caractère d'un std::string, tu peux faire:

std::string s = "Coca";

// s[1] te permet d'accéder à 'o'
std::cout << s[1] << std::endl;


Inutile de convertir cela en char* !
0
Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012
11 nov. 2009 à 17:08
ok, je vais essayer, merci beaucoup pour toute l'aide que tu m'apporte
0

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

Posez votre question
Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012
11 nov. 2009 à 17:11
saurais tu également comment empêcher le joueur de rentrée 2 fois la même lettre ?
0
Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012
11 nov. 2009 à 17:38
je voudrais faire une fonction ou une procédure qui reprenne par exemple la variable string essaisJoueur qui contient la saisie de l'utilisateur mais le probleme c'est que je ne sais pas comment lui dire de reprendre la valeur de essaisJoueur
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
12 nov. 2009 à 11:31
saurais tu également comment empêcher le joueur de rentrée 2 fois la même lettre ?


Tu ne peux pas l'en empêcher. A toi de vérifier que la chaîne obtenu ne contiennent pas de doublon.


je voudrais faire une fonction ou une procédure qui reprenne par exemple la variable string essaisJoueur qui contient la saisie de l'utilisateur mais le probleme c'est que je ne sais pas comment lui dire de reprendre la valeur de essaisJoueur


Oula. Je t'invite à revoir les bases. Essaie de voir sur des sites du genre "Le site du zéro". Il y a plein de tutoriaux faciles d'accès.

#include 

void fonction(const std::string& s)
{
  std::cout << s << std::endl;
}

int main()
{
  std::string essaieJoueur;

  std::cout << "Nom joueur: " << std::endl;
  std::cin >> essaieJoueur;
  fonction(essaieJoueur);

  return 0;
}
0
Rejoignez-nous