begin process at 2012 02 12 14:43:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Convertion d'une string en char


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Convertion d'une string en char

dimanche 9 mars 2003 à 14:49:31 | Convertion d'une string en char

redpooka

Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?

Merci



#include <iostream>
#include <string>


char string_en_char(string &La_chaine)
{ /*On met le string dans une chaine de carctère*/
char Char_Chaine[La_chaine.size()+1]; /*Il faut penser a mettre un caractère en plus pour celui de fin*/
for (int i=0; i < La_chaine.size(); i++) /*On met la premiere string dans la chaine de caractère*/
{
Char_Chaine[i]=La_chaine[i];
}
Char_Chaine[La_chaine.size()]='\0';
return ( *Char_Chaine);
}

main()
{
string test="Salut";
char test2 = (string_en_char(test)) ;

cout << "\nla voici " << test2 << "\n";

}

dimanche 9 mars 2003 à 16:53:39 | Re : Convertion d'une string en char

C2S

Salut

Tu fais une grosse confusion entre les char et les char* en C... je vais essayer de t'expliquer tout ca:

un char est un caractère (je penses que tu le sait)
un char* est un poibteur sur caractère (l'adresse d'un caractère)
un tableau de char : un char Chaine[] est une suite de carateres!

La ou le C c'est de la merde, c'est qu'un pointeur sur caractère et un tableau de caractère, c'est la meme chose!

en fait, quand on interperte un char* comme une chaine de caractere, on concidère l'objet pointé par le char* (un premier caractère) puis tout les elements qui le suivent dans la memoire du systeme jusqu'a ce que l'on recontre un \0 !!
la difference entre le char* et le char [], c'est que l'on ne determine pas la taille du char* (il faut lui proposer un espace mémoire avec un malloc() )

pour en revenir a ton problème, ta fonction string_en_char renvoi ,un char (donc un unique caractère) ta fonction est donc équivalante à "return String[0]" !!!!
si tu veux renvoyer un char* (une chaine de caractere au sens C) tu doit enlever l'etoile avant le return MAIS dans ce cas la ca passera pas a la com!pilation car tu va renvoyer l'adresse du premier caractère, or cette adresse est d'éclarée dans ta fonction appelante!!!!

donc tu as plusieurs solutions :

1 - Utiliser un malloc (ce qui te pêrmet de créer un un esapce mémoire dans le TAS)
#include <iostream>
#include <string>
#include <malloc.h>


char* string_en_char(string &La_chaine)
{
/*On met le string dans une chaine de carctère*/
char* Char_Chaine = (char*)malloc(La_chaine.size()+1);
/*Il faut penser a mettre un caractère en plus pour celui de fin*/
for (int i=0; i < La_chaine.size(); i++)
/*On met la premiere string dans la chaine de caractère*/
{
Char_Chaine[i]=La_chaine[i];
}
Char_Chaine[La_chaine.size()]='\0';
return ( Char_Chaine);
}

main()
{
string test="Salut";
char* test2 = (string_en_char(test)) ;

cout << "\nla voici " << test2 << "\n";
system("PAUSE") ;
}


2 - Solution :

Il existe une méthode en C++ de la casse string qui fait ce que tu veux!!!

#include <iostream>
#include <string>

main()
{
string test="Salut";
const char* test2 = test.c_str();

cout << "\nla voici " << test2 << "\n";
system("PAUSE") ;
}

ou encore (si tu veux pouvoir modifier téa chaine de caractère :

#include <iostream>
#include <string>

main()
{
string test="Salut";
char* test2 = const_cast<char*>(test.c_str());

cout << "\nla voici " << test2 << "\n";
system("PAUSE") ;
}

Voila, si il y a des choses que tu comprend pas hesites pas a m'ecrire!!

Bou courage!
------------
C2S
------------


-------------------------------
Réponse au message :
-------------------------------

> Voici avec ce programme ca n'affiche juste le premier charactère comment faire pour qu'il affiche toute la chaine de caracètre ?
>
> Merci
>
>
>

> #include <iostream>
> #include <string>
>
>
> char string_en_char(string &La_chaine)
> { /*On met le string dans une chaine de carctère*/
> char Char_Chaine[La_chaine.size()+1]; /*Il faut penser a mettre un caractère en plus pour celui de fin*/
> for (int i=0; i < La_chaine.size(); i++) /*On met la premiere string dans la chaine de caractère*/
> {
> Char_Chaine[i]=La_chaine[i];
> }
> Char_Chaine[La_chaine.size()]='\0';
> return ( *Char_Chaine);
> }
>
> main()
> {
> string test="Salut";
> char test2 = (string_en_char(test)) ;
>
> cout << "\nla voici " << test2 << "\n";
>
> }
>
>

dimanche 9 mars 2003 à 20:40:42 | Re : Convertion d'une string en char

redpooka

Merci beaucoup pour cette réponse très bien détaillé !
mercredi 2 avril 2008 à 16:05:07 | Re : Convertion d'une string en char

idrisbenali1

je n'y comprend rien !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Cette discussion est classée dans : string, chaine, char, size, convertion


Répondre à ce message

Sujets en rapport avec ce message

convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu Convertion "15"(string) --> 15(int) [ par crocejf2000 ] (Re)SalutIl faut que je test ma chaine et que je la convertisse si je peut. Avec atoi("12"), ca me donne bien 12, mais si je fait un atoi("12hach"), c string [ par ToToL ] BonjourComme le dit le sujet j'ai un probleme de string ...... ;-)en fait j'ai un char remplit d'une chaine de caractere avec a un endroit de la chain Allocation dynamique de char* .... [ par Gendal67 ] Bonjour à tous....Avant d'acheter un flingue pour de bon, je me suis dit qu'il pourrait etre judicieux de demander de l'aide quelque part... voila, je problème conversion string to char* [ par totoscill ] Bonjour,je veut récupérer des infos dans un fichier. Pour cela il me faut convertir mes lignes récupérer "string" en "char*". Voici mon code pour cett Recréer la fonction strstr [ par qubs ] Salut, J'aimerais recoder la fonction strstr mais je n'arrive pas a aboutir et a comprendre le fonctionnement, j'aimerais bien un coup de main svp. = tableau de chaine de caractère [ par delaktn ] salut, Je réalise une application dont je besoin d'un tableau de chaine de caractère et voila la déclaration de ce tableau: char* t[10]; j'ai réalisé petit problème avec strcat [ par macbang ] Bonjour,Je rencontre un petit problème avec la fonction strcat.j'ai déclaré plusieurs chaine de caractère.la première récupère un int converti en cara Convertir unsigned char en string^ [ par elise42 ] Bonjour à tous, je code en C++ et je cherche à convertir un unsigned char Buffer_Envoi en un string ^Trame. Quelqu'un aurait il une idée? Merci d'a


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales