Bonjour, je voulais savoir comment on pouvais faire pour transformer une string en un tableau de int ?
Bonjour, je voulais savoir comment on pouvais faire pour transformer une string en un tableau de int ?
Les string sont des tableaux de char.
Les char sont des entiers.
Donc tu as déjà un beau tableau de int, terminé par le caractère '\0'.
Quand tu affiches un élément il faut juste que tu transfrome le char en int, parceque sinon tu voir la représentation ASCII.
Je doit faire comme ca ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char a = '9'; int b = ((int) a)-48;
Oui, pour transformer un char en int ça va, tu peux aussi utiliser les operateur de transtypage, mais là je ne crois pas que ce sois vraiment nécessaire...
Tu peux faire ça aussi, c'est plus compréhensible:
Code : Sélectionner tout - Visualiser dans une fenêtre à part int b = (int)( a-'0');
Oui, mais pour ca, il faut savoir ce qu'il fait car il n'est pas force de connaitre le caractere ASCII correspondant au nombre a soustraire!!Envoyé par MatRem
et la, il peut soustraire n'importe quel nombre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char carac = 'a' ; int a = 10 ; int b = (int) carac - a ;
comme ça :Envoyé par maminova77
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int * string2int(char * chaine) { int *tab=new int[strlen(chaine)]; for (short i=0;i<8;i++) tab[i]=(int)(chaine[i]); return (tab); }
et tu utilises cette fonction comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int * valeurEnInt = string2int(valeurEnString);
Ta fonction string2int() demande un pointeur de caractéres alors que tu lui passe une string !!!
De plus il vaut mieux écrire la boucle sous cette forme :Et la valeur ne sera pas conservé avec cette transformation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (short i (0); i < 8; ++i)Une fonction qui "marche" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab[i]=(int)(chaine[i]);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int String2Int (string & Str) { int Val (0); for (short i (0); i < Str.size(); ++i) Val = Val*10+Str[i]-'0'; return Val; }
Une fonction qui "marche" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int String2Int (string & Str) { int Val (0); for (short i (0); i < Str.size(); ++i) Val = Val*10+Str[i]-'0'; return Val; }
la mienne MARCHE aussi même si elle n'est pas bien optimisée, espèce d'olibrius à pistons !!!
Désolé je ne voulais pas te vexer
Mais la tienne ne marche pas je l'ai essayé et je t'ai dit pourquoi au dessus ^^
EDIT : On aurait pu optimiser un peu plus en stockant Str.size() dans une variable car à chaque fois size() parcourt la chaine pour compter le nombre d'élément !
oui, mais ce qu'il peut faire, c'est simplement demander une string (par valeur donc) et retourner une autre string, non?
Le but n'est pas de retourner une autre string mais de retourner un int
Non non je suis pas vexé je disais juste que chez moi ça marche voici mon programme en entierEnvoyé par Tipoun
c'est vrai, ça le TRANSFORME pas mais ça retourne quand même le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <cstdlib> #include <iostream> using namespace std; int * string2int(char * chaine) { int *tab=new int[strlen(chaine)]; for (short i=0;i<8;i++) tab[i]=(int)(chaine[i]); return (tab); } int main(int argc, char *argv[]) { int * valeurEnInt = string2int("radiateur"); for (short i(0);i<sizeof(valeurEnInt);++i) cout << valeurEnInt[i] << endl; system("PAUSE>nul"); return EXIT_SUCCESS; }
Ah ok
Mais le sujet c'était String -> Int !!
Ce programme a un air de C non ?
Sans rancune
Je me vengeraiEnvoyé par Tipoun
sans rancune !
j'avais mal interpréter la question
un air de C ? où cela ?
Ok ^^ lol !Je me vengerai
Les airs de C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <cstdlib>
il est venu automatiquement quand j'ai créé le projet sous DEV-C++
Ah ok
Au fait Dev-Cpp devient un peu vieux, personnellement j'utilise Code Blocks.
Bon désolé le sujet à un peu dévié
La réponse est celle attendue ? Alors il faut rajouter Résolu, merci
et la STL appartiennent au C++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #include <iostream>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager