Visual Studio krzyczy na mnie o używaniu itoa() ... mówiąc, żeby używać _itoa zamiast? Wydaje mi się, że mają tę samą funkcję ... co daje?Jaka jest różnica między _itoa i itoa?
Odpowiedz
AC nie ma wprowadzać nazw, które nie są w normie, jeśli nie zastosują się do pewna konwencja nazewnictwa (jak zaczynając od podkreślenia). Wcześniejsze wersje kompilatora Microsoftu nie ściśle przestrzegały tej zasady, ale z biegiem czasu Microsoft dążył do tego, aby ich implementacja była bardziej zgodna ze standardami. Tak więc funkcje, które były używane do dostarczania, mogłyby zakłócać przestrzeń nazw użytkownika, którą implementują, używając nazw zarezerwowanych dla implementacji kompilatora i powodujących wycofywanie starych nazw.
Jeśli zdefiniowano _CRT_NONSTDC_NO_WARNINGS
, kompilator MS nie będzie narzekał na wycofanie funkcji itoa()
. Ale nadal będzie narzekać na to, że jest niebezpieczne (musisz zdefiniować _CRT_SECURE_NO_WARNINGS
, aby wyciszyć to ostrzeżenie). Lub użyj bezpieczniejszą wersję funkcji (_itoa_s()
), która zapewnia funkcję z wielkością bufora docelowego
Zarówno _itoa()
i itoa()
resolve do tej samej funkcji w bibliotece w dół do tego samego adresu - nie ma różnicy z wyjątkiem Nazwa.
MSDN documentation for itoa()
mówi:
Ta funkcja POSIX jest przestarzała początek w Visual C++ 2005. Zastosowanie ISO C++ conformant
_itoa
lub bezpieczeństwa wspomagane_itoa_s
zamiast.
itoa nie jest standardem C
„Ta funkcja jest określona w ANSI-C i nie jest częścią C++, ale jest obsługiwany przez niektóre kompilatory”. - cplusplus.com
Tak więc MSVS informuje użytkownika, aby użył _itoa do poinformowania, że nie jest standardowym C++ i że należy oznaczyć go jako taki. Uważam, że jest tam kompatybilność wsteczna i że ta notacja służy czytelności i rozróżnieniu.
itoa
nie jest standardem, więc powinieneś użyć strumienia łańcuchowego.
musisz #include <sstream>
przykładem jej użycia może być: realizacja biblioteka czasu pracy
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
Nie wiem, dlaczego musimy użyć strumienia zawierającego _itoa() lub _itoa_s(). Myślę, że dwie alternatywy to lepszy wybór, który tworzy strumień, który konwertuje tylko liczbę na łańcuch. – HyLian
itoa nie jest standardem, nadal można z niego korzystać. Tylko upewnij się, że kompilator, którego używasz, obsługuje go. Strumień jest po prostu prawidłowym sposobem robienia tego. – Corey
Nie, jest to sposób C++, a bycie w C++ nie oznacza, że jest poprawne. –
W odpowiedzi na odpowiedź przez Bruce:
itoa
nie jest standardem, więc należy użyć stringstream zamiast.musisz
#include <sstream>
przykładem jest to stosowanie byłoby:
int i = 5;
std::stringstream ss;
ss << i;
std:: cout << ss.str();
Można również kodować własną itoa()
funkcję zamiast
np
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. Jaka jest różnica między? : i ||
- 2. Jaka jest różnica między $ i $$?
- 3. Jaka jest różnica między Subtotal i BaseSubtotal?
- 4. Jaka jest różnica między DetachedCriteria i ICriteria
- 5. Jaka jest różnica między & # x00A0; i ?
- 6. Jaka jest różnica między lex i yacc
- 7. jaka jest różnica między dijit i dojo
- 8. Jaka jest różnica między Control.Select() i Control.Focus()?
- 9. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 10. Jaka jest różnica między apletami i SWING?
- 11. Jaka jest różnica między session.commit() i session.flush()?
- 12. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 13. Jaka jest różnica między Konwertuj i parsuj?
- 14. Jaka jest różnica między JSP i JSTL?
- 15. Jaka jest różnica między Lazarus i CodeTyphon
- 16. Jaka jest różnica między crc32 i crc32b?
- 17. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 18. jaka jest różnica między ARM7 i ARM7s
- 19. Jaka jest różnica między http_build_str() i http_build_query()?
- 20. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 21. Jaka jest różnica między mock.patch.object (... i mock.patch (
- 22. Jaka jest różnica między GetBlobReference i GetBlobReferenceFromServer?
- 23. Jaka jest różnica między NSLayoutAttributeBaseline i NSLayoutAttributeBottom?
- 24. Jaka jest różnica między handlebar.js i handlebar.runtime.js?
- 25. Jaka jest różnica między innerText i outerText?
- 26. Jaka jest różnica między Json i Jsonp?
- 27. Jaka jest różnica między WCF i WPF?
- 28. Jaka jest różnica między runghc i runhaskell?
- 29. Jaka jest różnica między -hivevar i -hiveconf?
- 30. Jaka jest różnica między writeUTF i writeChars?
jest to tylko nazwy, które są różne wtedy ?? – Polaris878
ta odpowiedź nie dotyczy tego, czy _itoa i itoa mają tę samą funkcję ... –