สำหรับ 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 microseconds (บนเครื่องของฉัน) ในการแปลงครั้งแรกจากนั้นเพิ่มความเร็วขึ้นอย่างมากหลังจากนั้นหากดำเนินการซ้ำซ้อน
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 microseconds (บนเครื่องของฉัน) ในการแปลงครั้งแรกจากนั้นเพิ่มความเร็วขึ้นอย่างมากหลังจากนั้นหากดำเนินการซ้ำซ้อน
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 microseconds (บนเครื่องของฉัน) จากนั้นเพิ่มความเร็วขึ้นอย่างมากหลังจากนั้นหากทำซ้ำซ้อน แต่ไม่ได้ทำหน้าที่เท่าที่ผ่านมา
แน่นอนว่ามีตัวเลือกอื่น ๆ และคุณสามารถห่อสิ่งเหล่านี้ไว้ในฟังก์ชั่นของคุณเองได้