1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| /* soit la structure "Person" ressemblant à */
struct Person
{
std::string name;
std::strintg firstname;
int age;
};
/* et l'opérateur << "qui va bien" ressemblant à */
std::ostream& operator<<(std::ostream& out, Person & p)
{
out << p.name << p.firstname << p.age;
return out;
}
/* tu pourais très bien utiliser le tout sous une forme proche de */
int main()
{
Person p;
p.name = "martin";
p.firstname = "philippe";
p.age = 29;
std::stringstream ss;
/* on introduit la personne dans le flux de conversion
* mais ss pourrait, grace à l'opérateur << utilisant un ostream,
* tout aussi bien être la sortie standard (cout) ou un fichier (ofstream)
*/
ss<<p;
/* il est possible de récupérer une chaine de caractères au départ du
* flux si c'est un std::(o)stringstream :
*/
std::string str = ss.str();
/* et, en cas de besoin, il est possible (pour la compatibilité avec C uniquement ;)
* de récupérer une chaine de caractères "C style" grace à la fonction
* membre de la classe string c_str()
*/
const char * charPtr = str.c_str();
/* ... */
return 0;
} |
Partager