Bonjour, je voulais savoir comment on pouvais faire pour transformer une string en un tableau de int ?
Version imprimable
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:
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: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!!Citation:
Envoy� par MatRem
et la, il peut soustraire n'importe quel nombre...:idea:Code:
1
2
3
4 char carac = 'a' ; int a = 10 ; int b = (int) carac - a ;
comme �a :Citation:
Envoy� par maminova77
Code:
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:
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:for (short i (0); i < 8; ++i)
Une fonction qui "marche" :Code:tab[i]=(int)(chaine[i]);
Code:
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; }
Citation:
Une fonction qui "marche" :
Code:
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?:question::question::question:
Le but n'est pas de retourner une autre string mais de retourner un int ;)
mille excuse, je m'etais egare...:ave:
Non non je suis pas vex� je disais juste que chez moi �a marche voici mon programme en entierCitation:
Envoy� par Tipoun
c'est vrai, �a le TRANSFORME pas mais �a retourne quand m�me le r�sultatCode:
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 vengerai :mouarf: ;)Citation:
Envoy� par Tipoun
sans rancune !
j'avais mal interpr�ter la question
un air de C ? o� cela ?
Ok ^^ lol !Citation:
Je me vengerai :mouarf: :wink:
Les airs de C :
Code:#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� :oops:
La r�ponse est celle attendue ? Alors il faut rajouter R�solu, merci ;)
et la STL appartiennent au C++.Code:
1
2 #include <iostream>