Utiliser le contenu d'un string comme un int

Fermé
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 1 févr. 2008 à 18:45
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 3 févr. 2008 à 16:38
Bonjour,

Voila, la question que je dois résoudre :

"Ecrire uen fonction carrechaine qui calcule le carre dun nombre reprsenté par une chaine de caractères. Cette fonction return -1 si la chaine ne correspond pas a un nombre.

Voici ma fonction :

string carreChaine ( const string & chaine )
{      
     int i=0; string copie;
     while(i<chaine.length())
      {
         if(chaine[i]<48 || chaine[i]>57)
         copie = -1;
         return copie ;     
      }
      i=chaine; i*=i;
      return copie;
}


Et le compilateur me dit :21 cannot convert `const std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `int' in assignment

En gros, je veux remplir mon entier avec mon string, et il veut pas, je sais pas comment faire... =/

Merci d'avance.

4 réponses

azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
2 févr. 2008 à 19:26
up...
0
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
3 févr. 2008 à 11:50
essaye avec atof :
int a;
char chaine[3];
strcpy(chaine,"01");
a=atof(chaine);
printf("%d",a);

voilà normalement ça marche.
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
3 févr. 2008 à 11:59
si copie est un string, copie=-1 n'est pas possible. copie doit être int

int carreChaine ( const string & chaine )
{
int i=0; int copie=0;
...
copie = -1;
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
3 févr. 2008 à 16:38
oui, ca passe en compile, mais quand je met des chiffres le programme ne fait rien, enfin, comme sil rentrait en boucle infinie quoi... peux tu mexpliquer un peu ce que tu fais ? Je débute et jai jamais fait de C...

sinon dubeck le return negatif passe en compile...

Le programme en entier :

#include <iostream>
#include <string>
using namespace std;

string saisiechaine (string &chaine)
{
     cout << "Veuillez saisir votre chaine de caractère : " ;     
     cin >> chaine;    
     return chaine;         
}

double carreChaine ( const string & chaine )
{      
     int i=0; string copie;
     while(i<chaine.length())
      {
         if(chaine[i]<48 || chaine[i]>57)
         return -1;   
      }
      double x=0;
      char chain[chaine.length()];
      strcpy(chain,"01");
      x=atof(chain);
      printf("%d",x); 
   // i=Integer.parseInt(chaine);
      x*=x;
      return x;
}

void affichereturn(const double &chaine)
{
cout << chaine ;           
}

int main ()
{
    string chaine;   
    
    string S;
    S = saisiechaine(chaine);
    
    double C;
    C = carreChaine(chaine);
    
    affichereturn(C);
    
    system("PAUSE");
    return 0;
}
0