[string C++] ::>>> bien Relou

Résolu/Fermé
Arno - 29 nov. 2006 à 16:54
mamiemando Messages postés 33453 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 6 janvier 2025 - 29 nov. 2006 à 16:59
Bonjour j'ai pas mal de problemes en C++ pour faire un toString() pour une classe nommée vecteur.
en effet je connai mieu le java ou c'est vraiment plus simple de manipuler des chaines de caracteres. voici l'état de mon code:

void Vecteur::toString(){
  cout << getX() <<";" << getY() << endl;
}


donc pour le moment j'affiche seulement les coordonnées x et y avec un cout.
et ma fonction ne retourne rien.
j'aimerais pluto que ma fonction retourne un string mais je misere pour concatener et caster mes coordonnees (qui sont des floats) en string.

j'espere que vous mavez suivi

1 réponse

mamiemando Messages postés 33453 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 6 janvier 2025 7 812
29 nov. 2006 à 16:59
Dans cet exemple je définis d'un coup l'opérateur d'écriture pour les sorties standards std::cout et std::cerr (de type std::ostream) et pour les fichiers (de type std::ofstream) grâce à un template. Les fonctions template doivent impérativement être intégralement dans le .hpp
#include <iostream>

class vecteur{
  protected:
  double x;
  double y;
  public:
  vecteur(){}
  vecteur(const double & x0,const double & y0):x(x0),y(y0){}
  inline void setx(const double & x0){x = x0;}
  inline void sety(const double & y0){y = y0;}
  inline const double & getx() const {return x;}
  inline const double & gety() const {return y;}
};

template <typename Tstream>
Tstream & operator << (Tstream & out,const vecteur & v){
  out << v.getx() << ' ' << v.gety();
  return out;
}

int main(){
  vecteur v1(5.0,3.6);
  std::cout << v1 << std::endl;
  return 0;
}

Bonne chance
0