Visual Studio vous crie à l'aide de Cela me semble comme si elles sont la même fonction. Ce qui donne? P> ITOA () code> Dire d'utiliser
_itoa () code> à la place? P>
5 Réponses :
the Documentation MSDN pour ITOA () < / code>
dit: p>
Cette fonction POSIX est obsolète à partir de Visual C ++ 2005. Utilisez l'ISO C ++ conformiste
_ITOA code> ou Security-amélioré
_itoa_s code>. p> blockQuote>
Est-ce juste les noms qui sont différents alors ??
Cette réponse ne traite pas de savoir si _itoa et ITOA sont la même fonction ...
ITOA n'est pas standard C. P>
"Cette fonction n'est pas définie dans ANSI-C et ne fait pas partie de C ++, mais est pris en charge par certains compilateurs." - Cplusplus.com P>
Donc, MSVS vous indique d'utiliser le _ITOA pour vous dire qu'il n'est pas standard C ++ et que vous devriez le marquer comme tel. Je crois que c'est là pour la compatibilité à l'envers et que cette notation est destinée à la lisibilité et à la distinction. P>
Vous aurez besoin de son utilisation serait: p> itoa code> n'est pas standard, vous devez donc utiliser StringStream à la place.
#include
Je ne trouve pas pourquoi nous devons utiliser un ruisseau ayant _itoa () ou _itoa_s (). Je pense que deux alternatives sont un meilleur choix qui créant un flux pour convertir uniquement un numéro en chaîne.
ITOA n'est pas standard, vous pouvez toujours l'utiliser. Assurez-vous simplement que le compilateur que vous utilisez le soutient. Un stringream est juste la bonne façon de le faire.
Non, c'est la façon C ++ de le faire et être C ++ ne signifie pas que c'est vrai.
Une mise en œuvre de la bibliothèque de temps d'exécution C n'est pas censée introduire des noms qui ne sont pas dans la norme, à moins qu'ils ne suivent une certaine convention de dénomination (comme à partir d'un soulignement). Les versions antérieures du compilateur de Microsoft n'ont pas suivi cette règle de manière particulièrement étroitement, mais au fil du temps, Microsoft a plus de choses pour rendre leur mise en œuvre plus conforme aux normes. Donc, les fonctions qu'ils utilisaient pour fournir intrus sur l'espace de noms de l'utilisateur qu'ils ont mises en œuvre à l'aide de noms réservés aux implémentations du compilateur et ont amorcé les anciens noms. P>
Si Les deux _crt_nonstdc_no_warnings code> est défini, le compilateur MS ne se plaint pas de la fonction
itoa () code> est obsolète. Mais il restera encore en train de se plaindre d'être dangereux (vous devez définir
_crt_secure_no_warnings code> pour calmer cet avertissement). Ou utilisez la version plus sûre de la fonction (
_itoa_s () code>) qui fournit la fonction avec la taille de la mémoire tampon de destination p>
_itoa () code> et
itoa () code> résolve à la même fonction exacte de la bibliothèque vers la même adresse - il n'y a pas de différence sauf dans le nom. < / p>
en réponse à la réponse de Bruce:
itoa code> n'est pas standard, vous devez donc utiliser StringStream à la place. P>
Vous aurez besoin
#include
code> p> Un exemple de son utilisation serait: p>
int i = 5; code>
std :: stringstream ss; code> p>
ss << i; code> p>
std :: cou << ss.str (); code> p> blockQuote>
Vous pouvez également coder votre propre
itoa () code> fonction à la place p>
xxx pré> p>
Cette fonction est inefficace, non portable et gaspillée: l'appelant ne peut pas supprimer correctement la mémoire allouée à la chaîne code> car le pointeur renvoyé pourrait également indiquer une chaîne littéral. C ++ n'est pas Java.