Bonjour tous le monde :
J'ai crée une class String.
J'aimerais faire une fonction qui me retournerais le nombre de caractère d'une chaîne.
j'ai donc fait cette fonction :
Cependant j'ai une erreur, le programme ne retourne rien et bloque sur mon while.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int String::length() { int i = 0; while (_string[i] != '\0') { cout << _string[i]; i++; } return i; }
Voici mon main:
Voici le .h :
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 int main (int argc, char * const argv[]) { // insert code here... String s1; s1 = "hello "; String s2 = s1; s2 = "world"; String s3(", how are you"); //String s4 = '?'; //char* s5 = s3; //cout << s5; cout << s1 << s2 << s3 << endl ; String s6; int l6 = s6.length(); // l6 == 0 //ça bloque donc sur cette ligne /*String s7 = "hello"; int l7 = s7.length(); // l7 == 5 //cout << l6; //cout <<l7;*/ return 0; }
Voic mon .cpp :
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 using namespace std; #include <iostream> #ifndef _Sring #define _Strng class String { private: char* _string; public: String(); //constructeur par défaut ~String(); // destructeur String(const String &stringACopier); String& operator=(const char * aString); String(const char * uneChaine); operator char*() const; char *getString(); friend ostream& operator<<(ostream&, String&); int length(); }; #endif
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 #include "String.h" #include <iostream> using namespace std; String::String(){ _string = NULL; } String::~String(){ delete [] _string; } String::String(const String &stringACopier){ if( this != &stringACopier){ _string = new char[strlen(stringACopier._string)+1]; if (_string != NULL){ strcpy (_string, stringACopier._string); } } } String& String::operator=(const char * aString){ if (_string != NULL){ delete [] _string; } _string = new char[strlen(aString)+1]; if (_string != NULL){ strcpy (_string, aString); } return (*this); } String::String(const char * uneChaine){ _string = new char[strlen(uneChaine)+1]; if (_string != NULL){ strcpy (_string, uneChaine); } } String::operator char*() const { char* var; strcpy (var,_string); return var; } char* String::getString(){ return _string; } ostream& operator<< (ostream& flux, String &aString) { flux << aString.getString(); return flux; } int String::length() { int i = 0; while (_string[i] != '\0') { cout << _string[i]; i++; } return i; }
Je vous remercie d'avance de vos réponse et vous souhaite de joyeuses fêtes.
Partager