Concatener des chaines de caracteres

Concatener des chaines de caracteres - C++ - Programmation

Marsh Posté le 09-01-2006 à 18:17:48    

Salut a tous,
 
Connaissez-vous un moyen de concatener plusieurs chaines de caracteres en une ligne de commande?
 
Du genre:

Code :
  1. std::string tric = "Tric";
  2. std::string result = "Truc " + tric + " Trac ";


 
Sauf que ca, ca ne marche pas  :)  
 
(Le but etant de recuperer le resultat de la concatenation dans une string)
 
Merci d'avance.

Reply

Marsh Posté le 09-01-2006 à 18:17:48   

Reply

Marsh Posté le 09-01-2006 à 19:35:02    

#include<string> ?
 
Sinon, ça marche chez moi...
 
Eventuellement essaye :
std::string result = std::string("Truc " ) + tric + std::string(" Trac " );

Reply

Marsh Posté le 10-01-2006 à 10:40:43    

Ok en fait:
 
std::string result = std::string("Truc " ) + tric + std::string(" Trac " );
 
marche bien, mais...
 
std::string result = "Truc " + tric + " Trac ";
 
ne marche pas!

Reply

Marsh Posté le 10-01-2006 à 20:06:06    

Tu utilises quel compilateur ?
 
De toute façon ça semble logique que l'on ait un string pour appeler la méthode operator+ de string.
Chez moi il doit le convertir en string implicitement, c'est tout.

Reply

Marsh Posté le 10-01-2006 à 21:22:58    

Tarabiscote a écrit :

Tu utilises quel compilateur ?


un mauvais probablement :o
 

Tarabiscote a écrit :

De toute façon ça semble logique que l'on ait un string pour appeler la méthode operator+ de string.
Chez moi il doit le convertir en string implicitement, c'est tout.


J'pense pas.  
 
template <class charT, class Traits, class Alloc>
basic_string<charT,Traits,Alloc> operator+( charT const*, basic_string<charT,Traits,Alloc> const& );
 
et  
 
template <class charT, class Traits, class Alloc>
basic_string<charT,Traits,Alloc> operator+( basic_string<charT,Traits,Alloc> const&, charT const* );
 
sont obligatoirement fournies (21.3.7.1)

Reply

Marsh Posté le 11-01-2006 à 09:42:04    

Merci pour la précision, j'avais pas eu le temps de vérifier.

Reply

Marsh Posté le 11-01-2006 à 10:09:48    

La ligne de compilation commence par vc donc je suppose qu'il s'agit du compilo integre a visual c++.
 
Quand a la definition de l'operateur +, j'utilise une version de string maison:
 
template<class _Elem,
 class _Traits,
 class _Alloc> inline
 basic_string<_Elem, _Traits, _Alloc> __cdecl operator+(
  const basic_string<_Elem, _Traits, _Alloc>& _Left,
  const _Elem _Right)
 { // return string + character
 return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
 }
 
Le pb peut venir de la?

Reply

Marsh Posté le 11-01-2006 à 17:07:46    

il doit alors te manquer la fonction opertator+ symétrique, celle ou les paramètres sont inversés, le premier étant un const _Elem _Left


Message édité par fat le 11-01-2006 à 17:09:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed