BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005
-
18 juin 2004 à 23:23
Kyokono
Messages postés1Date d'inscriptiondimanche 1 juillet 2007StatutMembreDernière intervention 2 avril 2008
-
2 avril 2008 à 19:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 13 sept. 2004 à 19:48
de toutes facon on l'avais dit, si tu veux faire que des getline, parse ta string dans un istringstream, quoi de plus simple?
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 13 sept. 2004 à 19:37
c'est pas du int en char mais du char en int !
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 13 sept. 2004 à 19:35
sscanf & sprinf suffisent svt
L'idée de base n'est pas mauvaise,
mais là je crois que c'est du std de chez std
++
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 19 juin 2004 à 12:44
Remarquez : Le but c'est pas seulement la fonction mais surtout d'aider des débutants à comprendre aussi des choses
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 19 juin 2004 à 12:15
gotoxy() est pas standard :o
avec istringstream tu peux savoir s'il y a une erreur avec istringstream::good je crois.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 19 juin 2004 à 11:06
Tout simplement il dit erreur car il ne gère pas les négatif !
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 19 juin 2004 à 10:57
BlackGoddess > enfait atoi c'est bien standard, c'est itoa qui ne l'est pas
victorcoasne > en c++ tu a les stringstream, en c sscanf et atoi, mais prefer atoi car c'est plus performant
pour le code retour, comment tu fait si l'entier à convertir est -1 ?
medite sur ce code condensé style k&r
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 19 juin 2004 à 10:28
L'intérêt est si on a envie de faire QUE des cin.getline(); .
Mais aussi pour pas être embêter qd on fait cin >> puis cin.getline(); de plus dans la saisie cin >> tant que le nombre est pas bon il va à la ligne alors que si on a une interface tout juste calculée ça ne va plus.
Tandis qu'avec cin.getline() et un gotoxy(); on pourrais revenir à la même position.
Si vous dîtes que atoi() fait la même chose avec les renvoie d'erreur ect ma fonction ne sert plus à rien !
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 19 juin 2004 à 02:20
sscanf plutot dans son cas
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 juin 2004 à 23:30
BlackGoddess > oui atoi c'est pas standard, mais c'est present sur de nombreuses implementation, mais ya sprintf qui est standard...
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 juin 2004 à 23:28
ca sert a koi??
int i;
cin>>i; ou est le probleme ? et surtout ta pas l'impression de reinventer la roue ? ca existe en c standard et en c++ standard...
et ca,
for (int i=0;chaineaconv[i]!='\0';nbtotal++,i++){}
tu pouvais ecrire
while( chaineaconv[nbtotal++] ); ?
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005 18 juin 2004 à 23:23
int i;
cin >> i;
ou est le problème ?
sinon il existe atoi en C (je sais pas si c'est standard)
et std::istringstream en C++ qui est portable
#include <sstream>
int main()
{
std::istringstream iss("123);
int i;
iss >> i;
cout << i << endl;
}
2 avril 2008 à 19:20
int convctoi(char s[10]){
int i=0;
int num=0;
bool negatif=0;
if((s[i]-'0')==(-3)){
i=1;
negatif=1;
}
while(s[i]){
num=(num*10)+(s[i]-'0');
i++;
}
if(negatif){
num*=(-1);
}
return num;
}
Simple, cours et prend les négatifs
13 sept. 2004 à 19:48
13 sept. 2004 à 19:37
13 sept. 2004 à 19:35
L'idée de base n'est pas mauvaise,
mais là je crois que c'est du std de chez std
++
19 juin 2004 à 12:44
19 juin 2004 à 12:15
avec istringstream tu peux savoir s'il y a une erreur avec istringstream::good je crois.
19 juin 2004 à 11:06
19 juin 2004 à 10:57
victorcoasne > en c++ tu a les stringstream, en c sscanf et atoi, mais prefer atoi car c'est plus performant
pour le code retour, comment tu fait si l'entier à convertir est -1 ?
medite sur ce code condensé style k&r
int atoi(char s[])
{
int i, n;
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}
19 juin 2004 à 10:28
Mais aussi pour pas être embêter qd on fait cin >> puis cin.getline(); de plus dans la saisie cin >> tant que le nombre est pas bon il va à la ligne alors que si on a une interface tout juste calculée ça ne va plus.
Tandis qu'avec cin.getline() et un gotoxy(); on pourrais revenir à la même position.
Si vous dîtes que atoi() fait la même chose avec les renvoie d'erreur ect ma fonction ne sert plus à rien !
19 juin 2004 à 02:20
18 juin 2004 à 23:30
18 juin 2004 à 23:28
int i;
cin>>i; ou est le probleme ? et surtout ta pas l'impression de reinventer la roue ? ca existe en c standard et en c++ standard...
et ca,
for (int i=0;chaineaconv[i]!='\0';nbtotal++,i++){}
tu pouvais ecrire
while( chaineaconv[nbtotal++] ); ?
18 juin 2004 à 23:23
cin >> i;
ou est le problème ?
sinon il existe atoi en C (je sais pas si c'est standard)
et std::istringstream en C++ qui est portable
#include <sstream>
int main()
{
std::istringstream iss("123);
int i;
iss >> i;
cout << i << endl;
}