J’ai:
unsigned char *foo(); std::ssortingng str; str.append(static_cast(foo()));
L’erreur: invalid static_cast from type 'unsigned char*' to type 'const char*'
Quelle est la bonne façon de lancer ici en style C ++?
reinterpret_cast
char *
et const unsigned char *
sont considérés comme des types sans rapport. Donc, vous voulez utiliser reinterpret_cast
.
Mais si vous const unsigned char*
de const unsigned char*
à un type non- const
vous devez d’abord utiliser const_cast
. reinterpret_cast
ne peut pas rejeter une qualification const
ou volatile
.
Essayez reinterpret_cast
unsigned char *foo(); std::ssortingng str; str.append(reinterpret_cast(foo()));
unsigned char * est essentiellement un tableau d’octets et devrait être utilisé pour représenter des données brutes plutôt qu’une chaîne en général. Une chaîne Unicode serait représentée par wchar_t *
Selon le standard C ++, un reinterpret_cast entre unsigned char * et char * est sûr car ils ont la même taille et ont la même construction et les mêmes contraintes. J’essaie d’éviter reintrepret_cast encore plus que const_cast en général.
Si le cast statique échoue avec ce que vous êtes en train de faire, vous voudrez peut-être reconsidérer votre conception car si vous utilisez C ++, vous voudrez peut-être tirer parti de la partie “plus plus” et utiliser des classes de chaînes et STL pourrait fonctionner mieux pour vous)
Vous devrez utiliser un reinterpret_cast<>
car les deux types entre lesquels vous lancez ne sont pas liés.
J’espère que ça aide. 🙂
const unsigned atsortingbName = getname(); const unsigned atsortingbVal = getvalue(); const char *attrName=NULL, *attrVal=NULL; attrName = (const char*) atsortingbName; attrVal = (const char*) atsortingbVal;