通常,或更具體地說,在競争性編程中,有許多情況需要将數字轉換為字符串或将字符串轉換為數字。但是缺乏某些必不可少的工具的知識使我們不得不這樣做。本文介紹了一些實現此任務的方法。
将字符串轉換為數字
方法1:使用stringstream類或sscanf()
stringstream():這是将數字字符串轉換為int,float或Double的簡單方法。以下是使用stringstream将字符串轉換為int的示例程序。
輸出:x的值:12345
stringstream是一種操作字符串的便捷方法。
sscanf() 是類似于scanf()的C樣式函數。它從字符串而不是标準輸入中讀取輸入。
輸出:x的值:12345
同樣,我們可以分别使用%f和%lf讀取float和double。
方法2:使用stoi()或atoi()進行字符串轉換.
stoi(): stoi()函數将字符串作為參數并返回其值。以下是一個簡單的實現:
輸出:
stoi(“ 45”)是45
stoi(“ 3.14159”)是3
stoi(“ 31337 geek”)是31337
atoi(): atoi()函數将字符數組或字符串文字作為參數并返回其值。以下是一個簡單的實現:
輸出:
atoi(“ 42”)是42
atoi(“ 3.14159”)是3
atoi(“ 31337 geek”)是31337
stoi()與atoi()
atoi()是舊的C樣式函數。在C 11中添加了stoi()。
atoi()僅适用于C風格的字符串(字符數組和字符串文字),stoi()适用于C 字符串和C風格的字符串
atoi()僅接受一個參數并返回整數值。
int atoi(const char * str);
stoi()最多可以包含三個參數,第二個參數用于起始索引,第三個參數用于輸入數字的基數。
int stoi(const string&str,size_t * index = 0,int base = 10);
類似地,為了将String轉換為Double,可以使用atof()。上面的函數返回轉換後的整數作為int值。如果無法執行有效的轉換,它将返回零。
方法3:使用boost詞彙表轉換
Boost庫提供了一個内置函數“ lexical_cast(“ string”)”,該函數直接将字符串轉換為數字。如果輸入無效,則返回異常“ bad_lexical_cast”。
輸出:
轉換後的浮點值為:6.5
轉換後的int值為:5
将數字轉換為字符串方法1:使用字符串流
在此方法中,字符串流聲明一個流對象,該對象首先将數字作為流插入對象,然後使用“ str()”跟随數字到字符串的内部轉換。
輸出:
從數字重新形成的字符串是:2016
方法2:使用to_string()
此函數接受一個數字(可以是任何數據類型),并以所需的字符串形式返回該數字。
實現方式:
輸出:
字符串中的整數是:20字符串中的浮點數是:30.500000
方法3:使用boost lexical cast
類似于字符串轉換,“ lexical_cast()”函數保持不變,但是這次參數列表修改為“ lexical_cast(numeric_var)”。
輸出:
字符串中的浮點值為:10.5
字符串中的int值是:17
本期的知識分享就到這裡了,希望對大家有幫助~
另外如果你想更好地提升你的編程能力,學好C語言C 編程!彎道超車,快人一步!筆者這裡或許可以幫到你~
編程學習書籍分享:
編程學習視頻分享:
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!
C語言C 編程學習交流圈子,點擊下方【了解更多】獲取更多學習資料幫助你學習成長哦~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!