Untuk C ++ 98 , ada beberapa opsi:
boost/lexical_cast
Boost bukan bagian dari pustaka C ++, tetapi mengandung banyak ekstensi pustaka yang bermanfaat.
The lexical_cast
fungsi template menawarkan bentuk yang nyaman dan konsisten untuk mendukung konversi umum ke dan dari jenis sewenang-wenang ketika mereka direpresentasikan sebagai teks.
- Dokumentasi 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;
}
Adapun runtime, lexical_cast
operasi membutuhkan sekitar 80 mikrodetik (pada mesin saya) pada konversi pertama, dan kemudian mempercepat setelah itu jika dilakukan secara berlebihan.
itoa
Fungsi ini tidak didefinisikan dalam ANSI-C dan bukan bagian dari C ++, tetapi didukung oleh beberapa kompiler.
- cplusplus.com
Ini berarti bahwa gcc
/ g++
tidak dapat mengkompilasi kode menggunakan 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;
}
Tidak ada runtime untuk dilaporkan. Saya tidak menginstal Visual Studio, yang dilaporkan dapat dikompilasi itoa
.
sprintf
sprintf
adalah fungsi pustaka standar C yang bekerja pada string C, dan merupakan alternatif yang benar-benar valid.
Membuat string dengan teks yang sama yang akan dicetak jika format digunakan pada printf, tetapi alih-alih dicetak, konten disimpan sebagai string C dalam buffer yang ditunjukkan oleh 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;
}
The stdio.h
sundulan mungkin tidak diperlukan. Sedangkan untuk runtime, sprintf
operasi membutuhkan sekitar 40 mikrodetik (pada mesin saya) pada konversi pertama, dan kemudian mempercepat setelah itu jika dilakukan secara berlebihan.
stringstream
Ini adalah cara utama pustaka C ++ untuk mengonversi bilangan bulat menjadi string, dan sebaliknya. Ada fungsi saudara serupa dengan stringstream
yang selanjutnya membatasi penggunaan yang dimaksudkan aliran, seperti ostringstream
. Menggunakan ostringstream
secara khusus memberi tahu pembaca kode Anda bahwa Anda hanya bermaksud menggunakan <<
operator, pada dasarnya. Fungsi ini adalah yang paling penting untuk mengonversi bilangan bulat menjadi string. Lihat pertanyaan ini untuk diskusi lebih lanjut.
#include <sstream>
#include <string>
int main() {
int x = 5;
std::ostringstream stream;
stream << x;
std::string x_str = stream.str();
return 0;
}
Adapun runtime, ostringstream
operasi membutuhkan sekitar 71 mikrodetik (pada mesin saya), dan kemudian mempercepat setelah itu jika dilakukan secara berlebihan, tetapi tidak sebanyak fungsi sebelumnya .
Tentu saja ada opsi lain, dan Anda bahkan dapat membungkus salah satu dari ini ke dalam fungsi Anda sendiri, tetapi ini menawarkan tampilan analitis pada beberapa yang populer.