Visual Studio est en train de me crier dessus en utilisant itoa() ... en disant d'utiliser _itoa à la place? Il me semble qu'ils ont la même fonction ... que donne-t-on?Quelle est la différence entre _itoa et itoa?
Répondre
mise en œuvre de la bibliothèque de l'exécution AC n'est pas censé introduire des noms qui ne sont pas dans la norme à moins qu'ils suivent une certaine convention de nommage (par exemple en commençant par un trait de soulignement). Les versions antérieures du compilateur de Microsoft ne suivaient pas cette règle particulièrement, mais au fil du temps, Microsoft s'est orienté davantage vers la mise en conformité de ses implémentations. Ainsi, les fonctions qu'elles fournissaient pour s'introduire dans l'espace de noms de l'utilisateur qu'elles implémen- taient en utilisant des noms réservés aux implémentations du compilateur et qui dépréciaient les anciens noms.
Si _CRT_NONSTDC_NO_WARNINGS
est défini, le compilateur MS ne se plaindra pas de la fonction itoa()
qui est dépréciée. Mais il se plaindra encore d'être dangereux (vous devez définir _CRT_SECURE_NO_WARNINGS
pour calmer cet avertissement). Ou utiliser la version plus sûre de la fonction (_itoa_s()
) qui fournit la fonction de la taille de la mémoire tampon de destination
Les deux _itoa()
et itoa()
détermination à exactement la même fonction dans la bibliothèque vers le bas à la même adresse - il n'y a pas de différence, sauf dans le prénom.
Le MSDN documentation for itoa()
dit:
Cette fonction est POSIX début dépréciée dans Visual C++ 2005. Utilisez le ISO C++ ou de sécurité
_itoa
conforme améliorée_itoa_s
à la place.
itoa est pas standard C.
"Cette fonction n'a pas été défini dans la norme ANSI-C et ne fait pas partie de C++, mais est soutenu par certains compilateurs." Par conséquent, MSVS vous demande d'utiliser _itoa pour vous indiquer qu'il ne s'agit pas d'un C++ standard et que vous devez le marquer comme tel. Je crois qu'il est là pour la rétrocompatibilité et que cette notation est pour la lisibilité et la distinction.
itoa
n'est pas standard, vous devriez donc utiliser stringstream à la place.
vous aurez besoin #include <sstream>
un exemple de son utilisation serait:
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
Je ne trouve pas pourquoi nous devons utiliser un flux ayant _itoa() ou _itoa_s(). Je pense que deux alternatives sont un meilleur choix que la création d'un flux pour convertir seulement un nombre en chaîne. – HyLian
itoa n'est pas standard, vous pouvez toujours l'utiliser. Assurez-vous simplement que le compilateur que vous utilisez le supporte. une stringstream est juste la bonne façon de le faire. – Corey
Non, c'est la manière C++ de le faire, et être C++ ne veut pas dire que c'est correct. –
En réponse à la réponse de Bruce:
itoa
n'est pas standard, vous devez donc utiliser stringstream à la place.vous aurez besoin
#include <sstream>
un exemple de son utilisation serait:
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
Vous pouvez également votre propre fonction itoa()
au lieu
par exemple:
const char* itoa (int num)
{
if (num == 0)
{
return "0";
}
bool neg = false;
if (num < 0)
{
neg = true;
num = -num;
}
int digits = 0;
int tmp = num;
while (tmp > 0)
{
digits++;
tmp /= 10;
}
int digs[digits];
for (tmp = digits; num > 0; tmp--)
{
digs[tmp] = num % 10;
num /= 10;
}
string s = neg == true ? "-" : "";
for (tmp = 1; tmp <= digits; tmp++)
{
s += (char)(digs[tmp] + 48);
}
return s.c_str();
}
- 1. Quelle est la différence entre dict() et {}?
- 2. quelle est la différence entre:.! et: r !?
- 3. Quelle est la différence entre = et: =
- 4. Quelle est la différence entre X509Certificate2 et X509Certificate in .NET?
- 5. Quelle est la différence entre Databinder.Eval et Container.DataItem?
- 6. Quelle est la différence entre DAO et Data Mapper
- 7. Quelle est la différence entre Keyboard.Focus (point) et item.Focus()?
- 8. Quelle est la différence entre les schémas W3 et xmlsoap.org?
- 9. Quelle est la différence entre JAIN SIP et MJSIP?
- 10. Quelle est la différence entre openGL et EAGL/openAL?
- 11. Quelle est la différence entre un nanokernel et un exokernel?
- 12. Quelle est la différence entre UML 2.1.2 et UML 2.2
- 13. Quelle est la différence entre ASP.NET DynamicData et IronSpeed?
- 14. Quelle est la différence entre DTCPing et DTCTester?
- 15. Quelle est la différence entre RMI et Corba?
- 16. Quelle est la différence entre "bool" et "bool?"
- 17. Quelle est la différence entre -ggdb gcc et -g gcc
- 18. Quelle est la différence entre RTN concret et RTN abstrait?
- 19. Quelle est la différence entre% Q et% {} dans ruby?
- 20. Quelle est la différence entre XML-RPC et SOAP?
- 21. Quelle est la différence entre Page.IsPostBack et Page.IsCallBack?
- 22. Quelle est la différence entre C et Embedded C?
- 23. Quelle est la différence entre nohup et un démon?
- 24. Quelle est la différence entre // et /// dans Visual Studio?
- 25. Quelle est la différence entre memset et memcpy dans C
- 26. Quelle est la différence entre Server.MapPath et HostingEnvironment.MapPath?
- 27. Quelle est la différence entre latin1_general_ci et utf8_bin dans MYSQL
- 28. Quelle est la différence entre debug.write et Trace.write?
- 29. Quelle est la différence entre un midlet et un corelet?
- 30. Quelle est la différence entre TAggregateField.IsNull et (TAggregateField.Value = Null)
Est-il juste les noms qui sont différents alors ?? – Polaris878
cette réponse n'indique pas si _itoa et itoa ont la même fonction ... –