Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++]Retour de String

Dans une sous-fonction les modifiant

Sujet résolu
    26 décembre 2005 à 20:34:08

    J'essaie de faire un programme adaptant une énigme, et pour ce faire, j'ai eu besoin de manipuler les chaines de caractères, autrement dit d'utiliser la classe string.
    Mon code se compile à merveille, les fonctions s'éxécutent, mais le retour ne s'efectue pas correctement, et ce pour une raison que j'ignore (et que je vient chercher sur ce forum justement).

    #include <iostream>
    using namespace std;

    string retourne(const string & original);
    string associe(const string & original);
    string rien(const string & original);

    int main()
    {
        string message,temp;
        cin >> message;
        cout << "message lui-meme : " << message << endl;
        temp = retourne(message);
        cout << "retourne de message : " << temp << endl;
        temp = associe(message);
        cout << "associe de message : " << temp << endl;
        system("pause");
    }

    string retourne(const string & original)
    {
        string result;
        for(int i = 0; i < original.length(); i++)
            result[original.length() - i] = original[i];
        return result;
    }

    string associe(const string & original)
    {
        string result;
        for(int i = 0; i < original.length(); i++)
        {
            result[i] = original[i];
            result[original.length() + i + 1] = original[i];
        }
        result[original.length()] = '2';
        return result;
    }


    Je pense que le problème vient du fait que je ne déclare en aucun endroit la longueur de la chaine, mais je n'ai pas trouver comment faire se peut.

    Si vous le compiler et 'exécuter, vous remarquerez que le code s'éxécute sans générer d'erreur,
    sauf si la chaine fait trois caractères de longueur !

    Et aussi,
    les sosu-fonctions ne retournent apparement rien
    ce qui me parait fort mystérieux, car cela me semble pourtant sans erreurs de syntaxes.
    • Partager sur Facebook
    • Partager sur Twitter
      27 décembre 2005 à 0:03:16

      string retourne(const string & original)
      {
          string result ;
          for(int i( (int)original.length()-1 ) ; i >= 0 ; --i )
              result += original[i] ;
          return result ;
      }

      string associe(const string & original)
      {
          return string( original + '2' + retourne(original) ) ;
      }


      Ne pas s'amuser à acceder via operator[] à un emplacement d'une chaine qui n'existe pas encore.
      • Partager sur Facebook
      • Partager sur Twitter

      [C++]Retour de String

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown