W przypadku C ++ 98 istnieje kilka opcji:
boost/lexical_cast
Zwiększenie nie jest częścią biblioteki C ++, ale zawiera wiele przydatnych rozszerzeń bibliotek.
lexical_cast
Szablon funkcja oferuje wygodny i spójną formę do wspierania wspólnych konwersji do iz dowolnych typów, gdy są one reprezentowane jako tekst.
- Dokumentacja doładowania
#include "boost/lexical_cast.hpp"
#include <string>
int main() {
int x = 5;
std::string x_str = boost::lexical_cast<std::string>(x);
return 0;
}
Jeśli chodzi o środowisko wykonawcze, lexical_cast
operacja zajmuje około 80 mikrosekund (na moim komputerze) przy pierwszej konwersji, a następnie znacznie przyspiesza, jeśli zostanie wykonana nadmiarowo.
itoa
Ta funkcja nie jest zdefiniowana w ANSI-C i nie jest częścią C ++, ale jest obsługiwana przez niektóre kompilatory.
- cplusplus.com
Oznacza to, że gcc
/ g++
nie można skompilować kodu przy użyciu itoa
.
#include <stdlib.h>
int main() {
int x = 5;
char * x_str = new char[2];
x_str = itoa(x, x_str, 10); // base 10
return 0;
}
Brak środowiska wykonawczego do zgłoszenia. Nie mam zainstalowanego programu Visual Studio, który podobno jest w stanie skompilować itoa
.
sprintf
sprintf
jest standardową funkcją biblioteki C, która działa na łańcuchach C i jest doskonale poprawną alternatywą.
Tworzy ciąg z tym samym tekstem, który zostałby wydrukowany, gdyby w printf użyto formatu, ale zamiast go wydrukować, zawartość jest przechowywana jako ciąg C w buforze wskazanym przez str.
- cplusplus.com
#include <stdio.h>
int main() {
int x = 5;
char * x_str = new char[2];
int chars_written = sprintf(x_str, "%d", x);
return 0;
}
stdio.h
Nagłówek może nie być konieczne. Jeśli chodzi o środowisko wykonawcze, sprintf
operacja zajmuje około 40 mikrosekund (na moim komputerze) przy pierwszej konwersji, a następnie znacznie przyspiesza, jeśli zostanie wykonana nadmiarowo.
stringstream
Jest to główny sposób konwersji liczb całkowitych na ciągi znaków w bibliotece C ++ i odwrotnie. Istnieją podobne funkcje siostrzane, stringstream
które dodatkowo ograniczają zamierzone użycie strumienia, takie jak ostringstream
. Użycie w ostringstream
szczególności mówi czytelnikowi twojego kodu, że <<
zasadniczo zamierzasz korzystać z operatora. Ta funkcja jest wszystkim, co jest szczególnie potrzebne do konwersji liczby całkowitej na ciąg. Zobacz to pytanie, aby uzyskać bardziej szczegółową dyskusję.
#include <sstream>
#include <string>
int main() {
int x = 5;
std::ostringstream stream;
stream << x;
std::string x_str = stream.str();
return 0;
}
Jeśli chodzi o środowisko wykonawcze, ostringstream
operacja zajmuje około 71 mikrosekund (na moim komputerze), a następnie znacznie przyspiesza, jeśli jest wykonywana nadmiarowo, ale nie o tyle, co poprzednie funkcje .
Oczywiście istnieją inne opcje i możesz nawet zawinąć jedną z nich we własną funkcję, ale oferuje to analityczne spojrzenie na niektóre z popularnych.