日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++字符串类型和数字之间的转换

發布時間:2024/4/18 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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++字符串类型和数字之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。