Для C ++ 98 є кілька варіантів:
boost/lexical_cast
Boost не є частиною бібліотеки C ++, але містить багато корисних розширень бібліотеки.
lexical_cast
Шаблон функції пропонує зручну і послідовну форму для підтримки спільних перетворень в і з довільних типів , коли вони представлені в вигляді тексту.
- Підвищення документації
#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 рядках, і є абсолютно вірною альтернативою.
Складає рядок з тим самим текстом, який був би надрукований, якби формат був використаний на 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 мікросекунди (на моїй машині), а потім значно пришвидшується, якщо виконувати зайве, але не на стільки, скільки попередні функції .
Звичайно, є й інші варіанти, і ви навіть можете включити один із них у свою функцію, але це пропонує аналітичний погляд на деякі популярні.