Для C ++ 98 есть несколько вариантов:
boost/lexical_cast
Boost не является частью библиотеки C ++, но содержит много полезных расширений библиотеки.
lexical_castШаблон функции предлагает удобную и последовательную форму для поддержки общих преобразований в и из произвольных типов , когда они представлены в виде текста.
- Документация Boost
#include "boost/lexical_cast.hpp"
#include <string>
int main() {
int x = 5;
std::string x_str = boost::lexical_cast<std::string>(x);
return 0;
}
Что касается времени выполнения, lexical_castоперация занимает около 80 микросекунд (на моей машине) при первом преобразовании, а затем значительно ускоряется, если выполняется избыточно.
itoa
Эта функция не определена в ANSI-C и не является частью C ++, но поддерживается некоторыми компиляторами.
- cplusplus.com
Это означает, что gcc/ g++не может скомпилировать код, используя 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;
}
Нет времени выполнения, чтобы сообщить. У меня не установлена Visual Studio, которая, как сообщается, может компилироваться itoa.
sprintf
sprintf является стандартной библиотечной функцией C, которая работает со строками C и является вполне допустимой альтернативой.
Составляет строку с тем же текстом, который будет напечатан, если формат был использован в printf, но вместо печати содержимое сохраняется в виде строки C в буфере, указанном 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Заголовок не может быть необходимым. Что касается времени выполнения, sprintfоперация занимает около 40 микросекунд (на моей машине) при первом преобразовании, а затем значительно ускоряется, если выполняется избыточно.
stringstream
Это основной способ преобразования целых чисел в строки библиотеки C ++ и наоборот. Существуют аналогичные родственные функции, stringstreamкоторые дополнительно ограничивают предполагаемое использование потока, например ostringstream. Использование, в ostringstreamчастности, говорит читателю вашего кода, что вы <<, по сути, собираетесь использовать только оператор. Эта функция - все, что особенно необходимо для преобразования целого числа в строку. Смотрите этот вопрос для более детального обсуждения.
#include <sstream>
#include <string>
int main() {
int x = 5;
std::ostringstream stream;
stream << x;
std::string x_str = stream.str();
return 0;
}
Что касается времени выполнения, ostringstreamоперация занимает около 71 микросекунды (на моей машине), а затем значительно ускоряется, если выполняется избыточно, но не настолько, как предыдущие функции .
Конечно, есть и другие варианты, и вы можете даже включить один из них в свои собственные функции, но это предлагает аналитический взгляд на некоторые из популярных.