C++int 형식 변환 string 형식
3632 단어 C++학습
1.C++의 int 회전 string
#방법 1:itoa 함수 사용: char * itoa ( int value, char * str, int base );
설명:문자열 로 정수 변환(비표 준 함수)
파라미터:·value:값 을 문자열 로 변환 할 수 있 습 니 다.·str:Array 를 메모리 에 저장 하고,결과 문자열 을 저장 합 니 다.
value as a string, between
2 and
36, where
10 means decimal base,
16 hexadecimal,
8 octal, and
2 binary.
Demo:
#include
using namespace std;
int main(int argc, char* argv[])
{
int n = 30;
char c[10];
//
itoa(n, c, 2);
cout << "2-> " << c << endl;
//
itoa(n, c, 10);
cout << "10-> " << c << endl;
//
itoa(n, c, 16);
cout << "16-> " << c << endl;
system("pause");
return 0;
}
출력 결과:
2-> 11110
10-> 30
16-> 1e
. . .
#방법 2:sprintf 사용: int sprintf ( char * str, const char * format, ... );
매개 변수 설명:
%백분율 기 호 를 인쇄 하고 변환 하지 않 습 니 다.b.정수 가 2 진 으로 바 뀌 었 다.c 정 수 를 대응 하 는 ASCII 문자 로 변환 합 니 다.d 정수 가 10 진수 로 바 뀌 었 다.f 배 정확도 숫자 가 부동 소수점 으로 바 뀌 었 다.o.정수 가 8 진 으로 바 뀌 었 다.s 정수 가 문자열 로 바 뀌 었 습 니 다.x 정 수 는 소문 자 16 진수 로 바 뀌 었 다.X 정 수 는 대문자 16 진수 로 바 뀌 었 다.
Demo:
#include
#include
using namespace std;
int main()
{
int n = 30;
char c[20]; //char *c;
//%d
sprintf(c, "%d", n);
cout << c << endl;
//%o
sprintf(c, "%o", n);
cout << c << endl;
//%X
sprintf(c, "%X", n);
cout << c << endl;
//%cACSII
sprintf(c, "%c", n);
cout << c << endl;
//%f
float f = 24.678;
sprintf(c, "%f", f);
cout << c << endl;
//%.2f"
sprintf(c, "%.2f", f);
cout << c << endl;
//
sprintf(c, "%d-%.2f", n, f);
cout << c << endl;
system("pause");
return 0;
}
출력 결과:
30
36
1E
// :
24.677999
24.68
30-24.68
. . .
#방법 3:stringstream 사용
Input/output string stream class: stringstream provides an interface to manipulate strings as if they were input/output streams.
Demo:
#include
#include
#include // stringstream
using namespace std;
int main()
{
stringstream strStream;
int a = 100;
float f = 23.5566;
//int、float stringstream
strStream << a << "----"<< f ;
string s = strStream.str();
cout << s << endl;
system("pause");
return 0;
}
출력 결과:
100----23.5566
. . .
#기타
1.sprintf 는 버퍼 넘 침 을 일 으 킬 수 있 습 니 다.snprintf 또는 비 표준적 인 asprintf 를 사용 하 는 것 을 고려 할 수 있 습 니 다.
2.mfc 프로그램 이 라면 CString::Format 을 사용 할 수 있 습 니 다.
3.boost 를 사용 하면 바로 사용 가능: string s = boost::lexical_cast (a);
4.atoi 도 이식 할 수 없다.