Convertir une char en string [Résolu]

juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 19 déc. 2004 à 14:05 - Dernière réponse : juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention
- 20 déc. 2004 à 00:12
Bonjour,

Je vient de faire pas mal de progrés en cpp, et je suis arriver à un probléme de variable.

Je declare, et j'utilise une variable de type char :
char  mandr[fred][256];


J'utilise cette variable pour plusieurs actions reperitif, je souhaite ensuite la une valeur de cette variable , mandr[3] en string (la recuperer ou la copier en string), en string pour utiliser des fonctions trés interessent comme replace...

J'ai essayer strcpy, sans succee.

Pouvez vous me dire si il est possible de copier une valeur char=> chaine string.

Merci
Afficher la suite 

8 réponses

Répondre au sujet
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 déc. 2004 à 18:20
+3
Utile
Désolé, je n'avais pas tout de suite compris que tu utilises la classe "string". Dans ce cas tu peux faire:
string str;//ton string
char tmp[256];//tampon temporaire
strcpy(tmp,(char*)mandr+(3*256));//copier 3e élément
str.assign(tmp);

Je ne sais pas s'il y'a une meilleure solution car je n'ai pas l'habitude de travailler avec la classe "string".
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de racpp
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 déc. 2004 à 18:29
+3
Utile
tu peux faire aussi:
str.assign((char*)mandr+(3*256));
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de racpp
plus_plus_fab 232 Messages postés vendredi 9 janvier 2004Date d'inscription 8 janvier 2005 Dernière intervention - 19 déc. 2004 à 19:21
+3
Utile
salut,

ça me fait peur toutes ces bidouilles !
Voila comment faire :

#include <string>
#include

using namespace std;
int main()
{
char t[5][256];
t[0][0] = 'a';
t[0][1] = 'b';
t[0][2] = '\0';
string s = t[0];
cout << s << endl;
return 0;
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de plus_plus_fab
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 déc. 2004 à 16:06
0
Utile
Salut,
Dans ton exemple, tu as déclaré un tableau de char à deux dimensions. strcpy() n'accepte que les pointeurs char* (ou tableau à une seule dimension ). Pour résoudre le problème, il suffit de mettre un cast et ajouter la taille de la 2eme dimention pour manipuler l'élément désiré. Voici un exemple:
char mandr[5][256];// 5 strings de 256 lettres
strcpy((char*)mandr+(0*256),"Première chaine");
strcpy((char*)mandr+(1*256),"Deuxième chaine");
strcat((char*)mandr+(0*256),(char*)mandr+(1*256));
//....

C'est valable pour les autres fonctions aussi.
Commenter la réponse de racpp
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 déc. 2004 à 16:12
0
Utile
Je voulais dire "...ajouter la taille de la 2eme dimention multipliée pas l'index de l'élément....."
Commenter la réponse de racpp
juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 19 déc. 2004 à 16:25
0
Utile
Merci tu ma mis sur la voie!

Parcontre je risque de detruire la structure de mon char ? car justement je veux ensuite la reutiliser, car enfaite je veux juste mettre dans une string le tableau [3], j'ai deja eu assez d'actions pour obtenir ce tableau à deux dimensions et je veux pas le perdre.

Deuxiement question :
Si j'ai à prendre ce que tu ma donner, et que je souhaite le recuperer de cette maniere :

string str(chaine);

où CHAINE est la valeur du tableau mandr[3] aprés conversion.

Comment je doit l'intercepter (chaine) ?

merci
Commenter la réponse de juki_webmaster
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 déc. 2004 à 17:49
0
Utile
Pour copier la chaine de n'importe quel élément du tableau à 2 dimensions dans un string tu fais:
 char string[256];
strcpy(string,(char*)mandr+(4*256));//copie du 4e élément

Ainsi le contenu du tableau à 2 dimensions ne sera pas changé.
Commenter la réponse de racpp
juki_webmaster 947 Messages postés mercredi 19 novembre 2003Date d'inscription 5 avril 2008 Dernière intervention - 20 déc. 2004 à 00:12
0
Utile
Vrachement super-merci les gars!

Je fait les toto, et j'ai validais les bon codes.

J'espere que d'autres qui aurons la meme question trouverons sans doute réponse en ce sujet.
Commenter la réponse de juki_webmaster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.