C++字符串类型和数字之间的转换
C++字符串類型和數字之間的轉換
轉載:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html
1、字符串數字之間的轉換
字符串---字符數組
(1)string --> char *
? ?string str("OK");
? ?char * p = str.c_str();
字符數組---字符串
(2)char * -->string
? ?char *p = "OK";
? ?string str(p);
字符數組---CString
(3)char * -->CString?
? ?char *p ="OK";
? ?CString m_Str(p);
? ?//或者
? ?CString m_Str;
? ?m_Str.Format("%s",p);
CString---字符數組
(4)CString --> char *
? ?CString str("OK");
? ?char * p = str.GetBuffer(0);
? ?...
? ?str.ReleaseBuffer();
(5)string --> CString ?
? ?CString.Format("%s", string.c_str()); ?
(6)CString --> string
? ?string s(CString.GetBuffer(0)); ?
? ?GetBuffer()后一定要ReleaseBuffer(),否則就沒有釋放緩沖區所占的空間,CString對象不能動態增長了。
(7)double/float->CString
? ?double data;
? ?CString.Format("%.2f",data); //保留2位小數
(8)CString->double
? ?CString s="123.12";
? ?double d=atof(s); ??
?
(9)string->double
? double d=atof(s.c_str());
2、數字轉字符串:使用sprintf()函數
字串格式化命令,主要功能是把格式化的數據寫入某個字符串中。
函數原型
int sprintf( char *buffer, const char *format, [ argument] … );
參數列表
buffer:char型指針,指向將要寫入的字符串的緩沖區。
format:格式化字符串。
[argument]...:可選參數,可以是任何類型的數據。
返回值
字符串長度(strlen)
char str[10];
int a=1234321;
sprintf(str,"%d",a);
--------------------
char str[10];
double a=123.321;
sprintf(str,"%.3lf",a);
--------------------
char str[10];
int a=175;
sprintf(str,"%x",a);//10進制轉換成16進制,如果輸出大寫的字母是sprintf(str,"%X",a)
--------------------
char *itoa(int value, char* string, int radix);?
同樣也可以將數字轉字符串,不過itoa()這個函數是平臺相關的(不是標準里的),故在這里不推薦使用這個函數。
3、字符串轉數字:使用sscanf()函數
從一個字符串中讀進與指定格式相符的數據。
char str[]="1234321";
int a;
sscanf(str,"%d",&a);
.............
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
.............
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16進制轉換成10進制
另外也可以使用atoi(),atol(),atof().
4、使用stringstream類
用ostringstream對象寫一個字符串,類似于sprintf()?
? ostringstream s1;
? int i = 22;
? s1 << "Hello " << i << endl;
? string s2 = s1.str();
? cout << s2;
用istringstream對象讀一個字符串,類似于sscanf()?
? istringstream stream1;
? string string1 = "25";
? stream1.str(string1);
? int i;
? stream1 >> i;
? cout << i << endl; ?// displays 25
寫代碼是一種藝術,甚于蒙娜麗莎的微笑。
分類:?C++基礎概念
總結
以上是生活随笔為你收集整理的C++字符串类型和数字之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu启动,而且找不到win10启
- 下一篇: C++字符串和数字转换完全攻略