Bonsoir
Avec la STL pas de fonction directe pour convertir une "string" en majuscules ou en minuscules.
Certes l' alphabet occidental ne représente pas , ce dont on parle dans le monde...
Mais venons en au faît de traduire tantôt minuscule , majuscule et voiçi ma première approche :
J' ai pensé que pour faire la conversion majuscule minuscule ou l' inverse il ne nécéssitait que deux fonctions :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include <iostream> #include <string> using namespace std ; short char_lower( char c ) { return tolower(c) ; } short char_upper( char c ) { return (short) toupper(c) ; } void str_upper( char& c ) { c = (char) toupper(c) ; } void str_lower( char& c ) { c = (char) tolower(c) ; } void do1(void) { string z; char buf[512] ; cin.getline( buf, 255, '\n') ; z = buf ; cout << z << endl; for_each( z.begin(), z.end(), str_upper ) ; cout << "for_each upper= " << z << endl ; for_each( z.begin(), z.end(), str_lower ) ; cout << "for_each lower= " << z << endl ; transform( z.begin(), z.end(), z.begin(), char_lower ) ; cout << "Transform Lower " << endl ; cout << z << endl ; transform( z.begin(), z.end(), z.begin(), char_upper ) ; cout << "Transform Upper" << endl ; cout << z << endl ; } #pragma argsused int main( int argc , char * argv [] ) { do1(); return 0; }
Q' en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void str_to_upper( string& z ) { for( size_t i = 0 ; i < z.length() ; i++ ) z[ i ] = toupper(z[ i ] ) ; } void str_to_lower( string& z ) { for ( size_t i = 0 ; i < z.length() ; i++ ) z[ i ] = tolower( z[ i ] ) ; }
On pourrait faire mieux en faisant en sorte que "str_to_lower" et "str_to_upper" renvoient la chaîne ainsi passée en référence ?
Cordialement.
Partager