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
|
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <iterator>
struct chatchien
{
std::string operator() (const std::string & ss) {return ss == "chat" ? "chien" :ss;};
} ;
int main(int argc,char ** argv)
{
std::istringstream is ("Un chat qui mange un chat");
std::stringstream ios ;
//parcoure le flux mot à mot et applique le foncteur chatchien. Stocke le resultat dans un autre flux en ajoutant un espace aprés chaque mot
std::transform(std::istream_iterator<std::string>(is) ,std::istream_iterator<std::string>()
,std::ostream_iterator<std::string>(ios," "),chatchien() );
std::string result;
//récupère la phrase dans le flux il y aura un espace en trop la fin.
std::getline(ios,result);
std::cout<<result<<std::endl;
return 0;
} |
Partager