Je suis tout nouveau dans la C++, en fait je decouvre. j'ai un soucis avec les class. En fait, j'ai creer un class pour les strings, jusque la pas de probleme. Mais je n'arrives pas a aceder a l'element de ma string pour en savoir le longueur. Pourtant ma class, et ma fonction marchent. J'ai un message d'erreur: 'strlen' : cannot convert parameter 1 from 'class String' to 'const char *'.
J'aimerais que ma fonction puisse fonctionner qq soit le type de chaine de caractere entrés.
Voici mon code:
#include <string.h>
#include <iostream.h>
class String
{
public:
// Constructeur par default
String() : len(0), ptr(new char('\0')) {}
// Constructeur par copie
String &operator = (const char *);
//Permettre la sortie
friend ostream &operator << (ostream &, const String &);
// Destructeur
~String()
{delete [] ptr;}
private:
int len;
char *ptr;
};
//-------------------------------------------------------------------
// Objets de la class
//-------------------------------------------------------------------
// **************************
// * Constructeur par copie *
// **************************
String &String::operator=(const char *chrs)
{
delete [] ptr;
len = strlen(chrs);
ptr = new char[len + 1];
strcpy(ptr, chrs);
return(*this);
}
// ********************************
// * Permettre la sortie par cout *
// ********************************
ostream &operator<<(ostream &stream, const String &s)
{
return(stream << s.ptr);
}
//-------------------------------------------------------------------
// Fin des Objets de la class
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// Fonctions
//-------------------------------------------------------------------
// Retourne la longueur d'une chaine
__declspec(naked) unsigned int String_Len(char* String1)
{
__asm {
mov ecx,[esp+4]
xor eax, eax
debut:
inc eax
inc ecx cmp byte ptr [ecx],0
jnz short debut
ret
}
}
//-------------------------------------------------------------------
// Fin des fonctions
//-------------------------------------------------------------------
//------------------------------------------------------------------
void main()
{
char* temp1="Bonjour";
String temp2;
temp2="Bonjour";
cout << "longueur de la Chaine temp1 par strlen: "<< strlen(temp1) << endl;
cout << "longueur de la Chaine temp1 par fonction: " << String_Len(temp1) << endl <<endl;;
cout << "longueur d'un Chaine temp1 par strlen: "<< strlen("Bonsoir vous tous") << endl;
cout << "longueur d'une Chaine temp1 par fonction: " << String_Len("Bonsoir vous tous") << endl <<endl;;
/* ces deux la ne marchent pas
cout << "longueur de la Chaine temp2 par strlen: "<< strlen(temp2) << endl;
cout << "longueur de la Chaine temp2 par fonction: "<< String_Len(temp2) << endl;
*/
}
Merci d'avance a tous