Für C ++ 98 gibt es einige Optionen:
boost/lexical_cast
Boost ist kein Teil der C ++ - Bibliothek, enthält jedoch viele nützliche Bibliothekserweiterungen.
Die lexical_cast
Funktionsvorlage bietet eine bequeme und konsistente Form zur Unterstützung gängiger Konvertierungen von und zu beliebigen Typen, wenn diese als Text dargestellt werden.
- Boosts Dokumentation
#include "boost/lexical_cast.hpp"
#include <string>
int main() {
int x = 5;
std::string x_str = boost::lexical_cast<std::string>(x);
return 0;
}
Was die Laufzeit betrifft, lexical_cast
dauert der Vorgang bei der ersten Konvertierung etwa 80 Mikrosekunden (auf meinem Computer) und wird anschließend erheblich beschleunigt, wenn er redundant ausgeführt wird.
itoa
Diese Funktion ist in ANSI-C nicht definiert und nicht Teil von C ++, wird jedoch von einigen Compilern unterstützt.
- cplusplus.com
Dies bedeutet, dass gcc
/ g++
Code nicht mit kompiliert werden kann 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;
}
Keine Laufzeit zu melden. Ich habe Visual Studio nicht installiert, das Berichten zufolge kompiliert werden kann itoa
.
sprintf
sprintf
ist eine C-Standardbibliotheksfunktion, die mit C-Strings funktioniert und eine absolut gültige Alternative darstellt.
Erstellt eine Zeichenfolge mit demselben Text, der gedruckt würde, wenn das Format für printf verwendet würde. Statt gedruckt zu werden, wird der Inhalt als C-Zeichenfolge in dem Puffer gespeichert, auf den str zeigt.
- 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;
}
Der stdio.h
Header ist möglicherweise nicht erforderlich. Was die Laufzeit betrifft, sprintf
dauert der Vorgang bei der ersten Konvertierung etwa 40 Mikrosekunden (auf meinem Computer) und wird anschließend erheblich beschleunigt, wenn er redundant ausgeführt wird.
stringstream
Dies ist die Hauptmethode der C ++ - Bibliothek zum Konvertieren von Ganzzahlen in Zeichenfolgen und umgekehrt. Es gibt ähnliche Schwesterfunktionen stringstream
, die die beabsichtigte Verwendung des Streams weiter einschränken, wie z ostringstream
. Die Verwendung ostringstream
teilt dem Leser Ihres Codes ausdrücklich mit, dass Sie im <<
Wesentlichen nur den Operator verwenden möchten. Diese Funktion ist alles, was besonders notwendig ist, um eine Ganzzahl in eine Zeichenfolge umzuwandeln. In dieser Frage finden Sie eine ausführlichere Diskussion.
#include <sstream>
#include <string>
int main() {
int x = 5;
std::ostringstream stream;
stream << x;
std::string x_str = stream.str();
return 0;
}
Was die Laufzeit betrifft, ostringstream
dauert der Vorgang ungefähr 71 Mikrosekunden (auf meinem Computer) und beschleunigt sich danach erheblich, wenn er redundant ausgeführt wird, jedoch nicht so stark wie die vorherigen Funktionen .
Natürlich gibt es auch andere Optionen, und Sie können sogar eine davon in Ihre eigene Funktion einbinden, aber dies bietet einen analytischen Blick auf einige der beliebtesten.