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>