Bonjour tout le monde,
Je veux faire une fonction qui prend une string et qui la met en majuscule (nous ignorerons ici les problèmes d'indianness, d'accents et de ponctuation).
J'ai trouvé 2 façons pour le faire. La première utilise la fonction for_each:
La deuxième solution utilise la fonction transform:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <string> #include <algorithm> //... using namespace std; class MyUpper1 { public: MyUpper1(string& str):str_(str){} void operator () (char c) const { str_ += toupper(c); } private: string& str_; }; int main() { string str = "test"; string result1; for_each( str.begin(), str.end(), MyUpper1(result1) ); //... }
Je pense que les 2 méthodes sont assez proches, car elles utilisent toute les deux une boucle du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <string> #include <algorithm> //... using namespace std; class MyUpper2 { public: char operator () (char c) { return toupper(c); } }; int main() { string str = "test"; string result2 = str; transform( str.begin(), str.end(), result2.begin(), MyUpper2() ); //... }mais si les deux façons de faire existent, c'est qu'il doit y a voir des différences. Non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (; _ChkFirst != _ChkLast; ++_ChkFirst)
Partager