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;
}
보고 할 런타임이 없습니다. 나는 인 비주얼 스튜디오가 설치되지 않은 소문에 컴파일 할 수 itoa
.
sprintf
sprintf
C 문자열에서 작동하는 C 표준 라이브러리 함수이며 완벽하게 유효한 대안입니다.
printf에 format이 사용 된 경우 인쇄 될 텍스트와 동일한 텍스트로 문자열을 작성하지만 인쇄되는 대신 내용은 str이 가리키는 버퍼에 C 문자열로 저장됩니다.
- 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 마이크로 초 (내 컴퓨터에서)가 소요 되며, 이전에 수행 한 기능만큼 많이 수행 되지는 않지만 중복으로 수행 된 후에는 상당히 속도가 빨라집니다 .
물론 다른 옵션이 있으며이 중 하나를 자신의 기능으로 래핑 할 수도 있지만이 방법은 인기있는 옵션 중 일부를 분석적으로 보여줍니다.