Visual Studio mi sta urlando di usare itoa() ... dicendo di usare _itoa invece? Mi sembra che abbiano la stessa funzione ... cosa dà?Qual è la differenza tra _itoa e itoa?
risposta
AC non dovrebbe introdurre i nomi che non sono nello standard a meno che non seguono una alcune convenzioni di denominazione (come iniziare con un carattere di sottolineatura). Le versioni precedenti del compilatore di Microsoft non seguivano questa regola in modo particolarmente attento, ma col tempo Microsoft si stava muovendo maggiormente per rendere la loro implementazione più conforme agli standard. Quindi le funzioni che usavano per fornire che si intromettevano nello spazio dei nomi dell'utente che stavano implementando usando nomi che sono riservati alle implementazioni del compilatore e hanno deprecato i vecchi nomi.
Se _CRT_NONSTDC_NO_WARNINGS
è definito, il compilatore MS non si lamenterà della deprecazione della funzione itoa()
. Ma continuerà a lamentarsi del fatto che non è sicuro (devi definire _CRT_SECURE_NO_WARNINGS
per mettere a tacere quell'avvertimento). Oppure utilizzare la versione più sicura della funzione (_itoa_s()
), che fornisce la funzione con la dimensione del buffer di destinazione
Sia _itoa()
e itoa()
volontà di esattamente la stessa funzione nella libreria verso il basso per lo stesso indirizzo - non v'è alcuna differenza se non nel nome.
Il MSDN documentation for itoa()
dice:
Questa funzione POSIX è deprecato inizio in Visual C++ 2005. Utilizzare l'ISO C++ conforme
_itoa
o protezione avanzata_itoa_s
invece.
itoa non è standard C.
"Questa funzione non è definita in ANSI-C e non è parte di C++, ma è supportato da alcuni compilatori." - cplusplus.com
Quindi MSVS ti sta dicendo di usare _itoa per dirti che non è C++ standard e che devi contrassegnarlo come tale. Credo che sia qui per la retrocompatibilità e che questa notazione sia per la leggibilità e la distinzione.
itoa
non è standard, quindi è consigliabile utilizzare stringstream.
avrete bisogno #include <sstream>
un esempio è l'uso sarebbe: implementazione libreria di runtime
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
Non trovo il motivo per cui dobbiamo usare uno stream con _itoa() o _itoa_s(). Penso che due alternative siano la scelta migliore che creare uno stream per convertire solo un numero in stringa. – HyLian
itoa non è standard, puoi ancora usarlo. Assicurati solo che il compilatore che stai usando lo supporti. un modo per farlo è il modo giusto di farlo. – Corey
No, è il modo in C++ di farlo, ed essere C++ non significa che sia giusto. –
In risposta alla risposta di Bruce:
itoa
non è standard, quindi si dovrebbe utilizzare stringstream invece.avrete bisogno
#include <sstream>
un esempio è l'uso sarebbe:
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
È inoltre possibile codificare la propria funzione itoa()
invece
esempio:
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. Qual è la differenza tra = e: =
- 2. Qual è la differenza tra Verilog! e ~?
- 3. Qual è la differenza tra? : e ||
- 4. qual è la differenza tra [[], []] e [[]] * 2
- 5. Qual è la differenza tra $ e $$?
- 6. Qual è la differenza tra ("") e (null)
- 7. Qual è la differenza tra dict() e {}?
- 8. Qual è la differenza tra " " e ""?
- 9. Qual è la differenza tra {0} e ""?
- 10. Qual è la differenza tra `##` e `hashCode`?
- 11. Qual è la differenza tra {0} e +?
- 12. Qual è la differenza tra .ToString() e + ""
- 13. qual è la differenza tra:.! e: r !?
- 14. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 15. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 16. Qual è la differenza tra il callback e la promessa
- 17. Qual è la differenza tra la sezione .got e .got.plt?
- 18. Qual è la differenza tra la lista() e []
- 19. Qual è la differenza tra GHC e la piattaforma Haskell?
- 20. Qual è la differenza tra sé e la finestra?
- 21. Qual è la differenza tra la cartella vim72 e vimfiles?
- 22. Qual è la differenza tra la serratura e RLock
- 23. Qual è la differenza tra la funzione() {}() e function() {}()
- 24. Qual è la differenza tra la crittografia SHA e AES?
- 25. Qual è la differenza tra la [OptionalField] e [NonSerialized]
- 26. Qual è la differenza tra Chisel e Lava e CLaSH?
- 27. Qual è la differenza tra queste funzioni
- 28. Qual è la differenza tra queste funzioni?
- 29. Qual è la differenza tra Response.Write() eResponse.Output.Write()?
- 30. Qual è la differenza tra applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
E 'solo i nomi che sono diversi, allora ?? – Polaris878
questa risposta non si riferisce se _itoa e itoa sono la stessa funzione ... –