C ++ 98 için birkaç seçenek vardır:
boost/lexical_cast
Boost, C ++ kütüphanesinin bir parçası değildir, ancak birçok yararlı kütüphane uzantısı içerir.
lexical_cast
Fonksiyon şablonu ve onlar metin olarak temsil edilir keyfi türlerinden ortak dönüşümleri desteklemek için uygun ve tutarlı formu sunuyor.
- Boost Belgeleri
#include "boost/lexical_cast.hpp"
#include <string>
int main() {
int x = 5;
std::string x_str = boost::lexical_cast<std::string>(x);
return 0;
}
Çalışma zamanı gelince, lexical_cast
işlem ilk dönüşümde yaklaşık 80 mikrosaniye (makinemde) alır ve daha sonra yedekli olarak yapılırsa önemli ölçüde hızlanır.
itoa
Bu işlev ANSI-C'de tanımlanmamıştır ve C ++ 'ın bir parçası değildir, ancak bazı derleyiciler tarafından desteklenir.
- cplusplus.com
Bu, kodu kullanarak gcc
/ g++
derleyemeyeceğiniz anlamına gelir 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;
}
Rapor etmek için çalışma zamanı yok. Derlenmiş olduğu bildirilen Visual Studio yüklü değil itoa
.
sprintf
sprintf
C dizeleri üzerinde çalışan ve standart olarak mükemmel bir alternatif olan C standart kitaplık işlevidir.
Printf'de biçim kullanıldıysa yazdırılacak aynı metne sahip bir dize oluşturur, ancak yazdırılmak yerine, içerik str ile gösterilen arabellekte C dizesi olarak saklanır.
- 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
Başlık gerekli olmayabilir. sprintf
Çalışma zamanına gelince, işlem ilk dönüşümde yaklaşık 40 mikrosaniye (makinemde) alır ve daha sonra yedekli olarak yapılırsa önemli ölçüde hızlanır.
stringstream
Bu, C ++ kitaplığının tamsayıları dizelere dönüştürmenin ana yoludur ve tersi de geçerlidir. stringstream
Akımın kullanım amacını daha da sınırlayan benzer kardeş işlevleri vardır ostringstream
. Özellikle kullanmak ostringstream
, kod okuyucusuna yalnızca <<
operatörü kullanmak istediğinizi söyler . Bu işlev özellikle bir tamsayıyı dizeye dönüştürmek için gerekli olan tek şeydir. Daha ayrıntılı bir tartışma için bu soruya bakın .
#include <sstream>
#include <string>
int main() {
int x = 5;
std::ostringstream stream;
stream << x;
std::string x_str = stream.str();
return 0;
}
Çalışma süresine gelince, ostringstream
işlem yaklaşık 71 mikrosaniye (makinemde) alır ve daha sonra yedekli olarak yapılırsa, ancak önceki işlevler kadar değil , önemli ölçüde hızlanır .
Tabii ki başka seçenekler de var ve bunlardan birini kendi işlevinize bile sarabilirsiniz, ancak bu popüler olanlardan bazılarına analitik bir bakış sunar.