Utiliser le contenu d'un string comme un int

azerty0 Messages postés 1322 Statut Membre -  
azerty0 Messages postés 1322 Statut Membre -
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 1322 Statut Membre 75
 
up...
0
jerémiethe7 Messages postés 153 Statut Membre 32
 
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 19030 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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 1322 Statut Membre 75
 
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