C++int 형식 변환 string 형식

3632 단어 C++학습
C++에 서 는 C\#또는 자바 에서 직접 문자열 덧셈 을 사용 하여 int 형식 을 string 형식 으로 변환 할 수 있 는 것 이 아 닙 니 다.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 도 이식 할 수 없다.
 

좋은 웹페이지 즐겨찾기