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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

c++中字符与数值之间的转换函数(全网最全)

發(fā)布時間:2025/3/19 c/c++ 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中字符与数值之间的转换函数(全网最全) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

string類型與數(shù)值

1.【字符串轉(zhuǎn)換為數(shù)值】
記憶小技巧:s看成是string 類型 to是轉(zhuǎn)化 后邊的是轉(zhuǎn)化為的類型
i : int u:unsigned l:long f:float d:double

string和數(shù)值轉(zhuǎn)換轉(zhuǎn)換類型
to_string(val)把val轉(zhuǎn)換成string
stoi(s,p,b)把字符串s從p開始轉(zhuǎn)換成b進制的int
stol(s,p,b)把字符串s從p開始轉(zhuǎn)換成b進制的long
stoul(s,p,b)把字符串s從p開始轉(zhuǎn)換成b進制的unsigned long
stoll(s,p,b)把字符串s從p開始轉(zhuǎn)換成b進制的long long
stoull(s,p,b)把字符串s從p開始轉(zhuǎn)換成b進制的unsigned long long
stof(s,p)把字符串s從p開始轉(zhuǎn)換成float
stod(s,p)把字符串s從p開始轉(zhuǎn)換成double
stold(s,p)把字符串s從p開始轉(zhuǎn)換成long double

2.【數(shù)值轉(zhuǎn)換為字符串】

用stringstream即可把多種數(shù)值類型轉(zhuǎn)換為String類型的字符串

#include <string> #include <sstream>//需要包含該頭文件 #include <iostream> using namespace std; int main(){double a = 123.32;string res;stringstream ss;ss << a;ss >> res;//或者 res = ss.str();cout<<res; return 0; }

『Char數(shù)組類型的字符串』

a:char [N] 其余與string 中的規(guī)律一樣

字符串和數(shù)值轉(zhuǎn)換作用
atof(s)將字符串s[n]轉(zhuǎn)換為雙精度浮點型值。
atoi(s)將字符串s[n]轉(zhuǎn)換為整型值。
atol(s)將字符串s[n]轉(zhuǎn)換為長整型值。
strtod(s,*p,b)將字符串s[n]轉(zhuǎn)換為b進制雙精度浮點型值,到p停止,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字。
strtol(s,*p,b)將字符串s[n]轉(zhuǎn)換為b進制長整值,到p停止,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字。
strtoul(s,*p,b)將字符串s[n]轉(zhuǎn)換為b進制無符號長整型值,到p停止,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字。

sscanf()函數(shù)將字符數(shù)組轉(zhuǎn)為數(shù)字

功能:
把格式化的數(shù)據(jù)寫入某個字符串緩沖區(qū)。
頭文件
stdio.h
原型
int sprintf( char *buffer, const char *format, [ argument] … );
參數(shù)列表
buffer:char型指針,指向?qū)⒁獙懭氲淖址木彌_區(qū)。
format:格式化字符串。
[argument]…:可選參數(shù),可以是任何類型的數(shù)據(jù)。
返回值:字符串長度(strlen)

sscanf函數(shù)用法詳解:
  sscanf() - 從一個字符串中讀進與指定格式相符的數(shù)據(jù).
  函數(shù)原型:
  Int sscanf( string str, string fmt, mixed var1, mixed var2 … );
  int scanf( const char format [,argument]… );
  說明:
  sscanf與scanf類似,都是用于輸入的,只是后者以屏幕(stdin)為輸入源,前者以固定字符串為輸入源。
  
  其中的format可以是一個或多個 {%[] [width] [{h | l | I64 | L}]type | ’ ’ | ‘\t’ | ‘\n’ | 非%符號}
  
  注:
  
  1、 * 亦可用于格式中, (即 %d 和 %s) 加了星號 () 表示跳過此數(shù)據(jù)不讀入. (也就是不把此數(shù)據(jù)讀入?yún)?shù)中)
  
  2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有d。
  
  3、width表示讀取寬度。
  
  4、{h | l | I64 | L}:參數(shù)的size,通常h表示單字節(jié)size,I表示2字節(jié) size,L表示4字節(jié)size(double例外),l64表示8字節(jié)size。
  
  5、type :這就很多了,就是%s,%d之類。
  
  6、特別的:%[width] [{h | l | I64 | L}]type 表示滿足該條件的被過濾掉,不會向目標參數(shù)中寫入值
  支持集合操作:
  %[a-z] 表示匹配a到z中任意字符,貪婪性(盡可能多的匹配)
  %[aB’] 匹配a、B、'中一員,貪婪性
  %[^a] 匹配非a的任意字符,貪婪性
 
 例子:
  1. 常見用法。

  char buf[512] = ; sscanf("123456 ", "%s", buf); printf("%s\n", buf); 結果為:123456

2. 取指定長度的字符串。如在下例中,取最大長度為4字節(jié)的字符串。

sscanf("123456 ", "%4s", buf); printf("%s\n", buf); 結果為:1234

3. 取到指定字符為止的字符串。如在下例中,取遇到空格為止字符串。

 sscanf("123456 abcdedf", "%[^ ]", buf); printf("%s\n", buf); 結果為:123456

4. 取僅包含指定字符集的字符串。如在下例中,取僅包含1到9和小寫字母的字符串。

 sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf); printf("%s\n", buf); 結果為:123456abcdedf

5. 取到指定字符集為止的字符串。如在下例中,取遇到大寫字母為止的字符串。

  sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf); printf("%s\n", buf); 結果為:123456abcdedf

6、給定一個字符串iios/12DDWDFF@122,獲取 / 和 @ 之間的字符串,先將 "iios/"過濾掉,再將非’@'的一串內(nèi)容送到buf中

  sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf); printf("%s\n", buf); 結果為:12DDWDFF

7、給定一個字符串““hello, world”,僅保留world。(注意:“,”之后有一空格)

  sscanf(“hello, world”, "%*s%s", buf); printf("%s\n", buf); 結果為:world %*s表示第一個匹配到的%s被過濾掉,即hello被過濾了 如果沒有空格則結果為NULL

sprintf()函數(shù)將數(shù)值轉(zhuǎn)化為字符串

sprintf 是個變參函數(shù),定義如下:

int sprintf( char *buffer, const char *format [, argument] ... );

詳細鏈接:
sprintf()函數(shù)

參考博文;
使用函數(shù)轉(zhuǎn)化(非sscanf())

sscanf()函數(shù)

總結

以上是生活随笔為你收集整理的c++中字符与数值之间的转换函数(全网最全)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。