Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1469 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Metaprg + String

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Metaprg + String

n°993988
Stroustrup​-Junior
Posté le 25-02-2005 à 23:06:47  profilanswer
 

Je bloque sur un pb de métaprog. Je cherche à initialiser une chaîne de caractères contenant la liste des nombres compris entre 0 et N séparés par des espaces. Il semblerait que seuls les types 'integral' soit manipulables. Donc pas de string.

mood
Publicité
Posté le 25-02-2005 à 23:06:47  profilanswer
 

n°994081
Taz
bisounours-codeur
Posté le 26-02-2005 à 11:58:19  profilanswer
 

le seul truc que tu peux faire, c'est manipuler des pointeurs, genre const char* ayant une visibilité extern

n°994083
Taz
bisounours-codeur
Posté le 26-02-2005 à 12:01:20  profilanswer
 

j'avais pas lu le pseudo. Tu ferais peut être mieux de lire quelques uns de ces livres avant

n°994106
Stroustrup​-Junior
Posté le 26-02-2005 à 12:55:50  profilanswer
 

je regardre, merci.

n°994473
++fab
victime du syndrome IH
Posté le 26-02-2005 à 23:32:59  profilanswer
 

Stroustrup-Junior a écrit :

Je bloque sur un pb de métaprog. Je cherche à initialiser une chaîne de caractères contenant la liste des nombres compris entre 0 et N séparés par des espaces. Il semblerait que seuls les types 'integral' soit manipulables. Donc pas de string.


 

Code :
  1. #include <iostream>
  2. #include <sstream>
  3. #include <boost/mpl/range_c.hpp>
  4. #include <boost/mpl/for_each.hpp>
  5. namespace mpl = boost::mpl;
  6. namespace fab
  7. {
  8.     typedef mpl::range_c<int,2,8>::type seq_int;
  9.     struct concat
  10.     {
  11.     template <class T>
  12.     void operator()(T t)const
  13.     {
  14.                  ost << ' ' << T::value;
  15.         }
  16.     concat(std::ostringstream& os) : ost(os) {}
  17.     private:
  18.     std::ostringstream& ost;
  19.     };
  20. }//namespace fab
  21. int main()
  22.     std::ostringstream os;
  23.     fab::concat c(os);   
  24.     mpl::for_each<fab::seq_int>(c);   
  25.     std::cout << os.str() << '\n';
  26. }


 
un hybride meta/runtime, ça vaut ce que ça vaut, mais c'est du travail d'acrobate d'etre à la frontiere des deux mondes ... les spécialisations sont délicates :(

n°994506
++fab
victime du syndrome IH
Posté le 27-02-2005 à 01:08:58  profilanswer
 

Code :
  1. #include <boost/mpl/next.hpp>
  2. template <class T>
  3. struct seq : mpl::range_c<typename T::value_type,0,T::next::value>
  4. {};


 
à la place de seq_int, ce qui correspond mieux à la demande ...
pour l'utiliser :

Code :
  1. #include <boost/mpl/int.hpp>
  2. mpl::for_each<fab::seq<mpl::int_<7> > >(c);


Message édité par ++fab le 27-02-2005 à 01:12:08
n°994575
Taz
bisounours-codeur
Posté le 27-02-2005 à 12:19:53  profilanswer
 

pourquoi vous utilisez pas tout simplement std::copy ?

n°994593
++fab
victime du syndrome IH
Posté le 27-02-2005 à 12:57:36  profilanswer
 

Taz a écrit :

pourquoi vous utilisez pas tout simplement std::copy ?


 :heink:  
copier quoi vers quoi ?
 

n°994607
Taz
bisounours-codeur
Posté le 27-02-2005 à 13:38:09  profilanswer
 

ben ta concatenation

n°994609
++fab
victime du syndrome IH
Posté le 27-02-2005 à 13:42:23  profilanswer
 

Taz a écrit :

ben ta concatenation


 
seq_int a des iterateurs begin et end dans le méta-monde mais pas au runtime comme le demande std::copy. Ou alors, y a une façon de faire que j'ignore.

mood
Publicité
Posté le 27-02-2005 à 13:42:23  profilanswer
 

n°994612
++fab
victime du syndrome IH
Posté le 27-02-2005 à 13:44:25  profilanswer
 

attend, je vois ptet ce que tu veux dire ...
EDIT: réécrire ça :  

Code :
  1. ost << ' ' << T::value;


en utilisant std::copy, moooouuuais bof


Message édité par ++fab le 27-02-2005 à 14:09:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Metaprg + String

 

Sujets relatifs
recuperation string d'un JTextFieldPortage d'une vieille appli delphi + invalid typecast de string(PChar)
mysql_real_escape_string non reconnue ?Conversion String utf8
Incrémenter un stringUtilisaton de String.replaceAll
String pour 2 Forms[Resolu] [Mysql]Probleme d'insertion de string avec des anti slashs
Remplacer le caractère ' dans une StringParser un string (Date)
Plus de sujets relatifs à : Metaprg + String


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR