En fait, je viens de me rendre compte qu'il y a peut être bien un problème de communication, qu'il vaut mieux lever
Je viens en effet de réaliser qu'un char* n'est, en définitive, pas forcément une chaîne de caractères... Enfin, je le savais, mais je ne l'avais pas pris en compte
Donc MatRem, je dirais que le contexte de ta fonction prenant un char* devrait être précisé:
Si tu en parle comme une fonction utilisant le char* comme une chaîne de caractères, mon avis (personnel) est que tu es clairement mieux de la déclarer comme prenant une référence sur une std::string constante, de gérer le tout sous la forme de std::string, et de ne passer en char* que si tu a vraiment besoin d'un tableau de caractères ou d'une chaîne "C style".
Si, par contre, tu parle de cette fonction dans le contexte d'une fonction prenant un pointeur sur "un tableau de valeurs comprises entre 0 et 255" (en s'entendant sur le fait qu'un char ne fait pas forcément 8 bits ), dans le cadre, par exemple, de l'utilisation de certaines bibliothèques ou de certains protocoles, il est clair que l'utilisation d'une std::string n'est pas envisageable, vu que la chaîne sera considérée comme finie au premier caractère '\0' rencontré, et ce, même s'il devait encore y avoir 1Mb de données qui le suit
Mais, malgré tout, ce n'est pas parce qu'une fonction prendrait un char* que tu ne coderait plus en C++... étant donné que la "simple logique" nous indique que le pointeur sur char fait partie du sous ensemble commun
Partager