tft每日頭條

 > 科技

 > c語言怎麼将字符串轉成數字

c語言怎麼将字符串轉成數字

科技 更新时间:2024-05-16 18:58:30

通常,或更具體地說,在競争性編程中,有許多情況需要将數字轉換為字符串或将字符串轉換為數字。但是缺乏某些必不可少的工具的知識使我們不得不這樣做。本文介紹了一些實現此任務的方法。

c語言怎麼将字符串轉成數字(CC編程筆記)1

将字符串轉換為數字

方法1使用stringstream類或sscanf()

stringstream():這是将數字字符串轉換為int,float或Double的簡單方法。以下是使用stringstream将字符串轉換為int的示例程序。

c語言怎麼将字符串轉成數字(CC編程筆記)2

輸出:x的值:12345

stringstream是一種操作字符串的便捷方法。

sscanf() 是類似于scanf()的C樣式函數。它從字符串而不是标準輸入中讀取輸入。

c語言怎麼将字符串轉成數字(CC編程筆記)3

輸出:x的值:12345

同樣,我們可以分别使用%f和%lf讀取float和double。

方法2使用stoi()或atoi()進行字符串轉換.

stoi(): stoi()函數将字符串作為參數并返回其值。以下是一個簡單的實現:

c語言怎麼将字符串轉成數字(CC編程筆記)4

輸出:

stoi(“ 45”)是45

stoi(“ 3.14159”)是3

stoi(“ 31337 geek”)是31337

atoi(): atoi()函數将字符數組或字符串文字作為參數并返回其值。以下是一個簡單的實現:

c語言怎麼将字符串轉成數字(CC編程筆記)5

輸出:

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(con​st char * str);

stoi()最多可以包含三個參數,第二個參數用于起始索引,第三個參數用于輸入數字的基數。

int stoi(con​​st string&str,size_t * index = 0,int base = 10);

類似地,為了将String轉換為Double,可以使用atof()。上面的函數返回轉換後的整數作為int值。如果無法執行有效的轉換,它将返回零。

方法3:使用boost詞彙表轉換

Boost庫提供了一個内置函數“ lexical_cast(“ string”)”,該函數直接将字符串轉換為數字。如果輸入無效,則返回異常“ bad_lexical_cast”。

c語言怎麼将字符串轉成數字(CC編程筆記)6

輸出:

轉換後的浮點值為:6.5

轉換後的int值為:5

将數字轉換為字符串

方法1:使用字符串流

在此方法中,字符串流聲明一個流對象,該對象首先将數字作為流插入對象,然後使用“ str()”跟随數字到字符串的内部轉換。

c語言怎麼将字符串轉成數字(CC編程筆記)7

輸出:

從數字重新形成的字符串是:2016

方法2:使用to_string()

此函數接受一個數字(可以是任何數據類型),并以所需的字符串形式返回該數字。

實現方式:

c語言怎麼将字符串轉成數字(CC編程筆記)8

輸出:

字符串中的整數是:20字符串中的浮點數是:30.500000

方法3:使用boost lexical cast

類似于字符串轉換,“ lexical_cast()”函數保持不變,但是這次參數列表修改為“ lexical_cast(numeric_var)”。

c語言怎麼将字符串轉成數字(CC編程筆記)9

輸出:

字符串中的浮點值為:10.5

字符串中的int值是:17

本期的知識分享就到這裡了,希望對大家有幫助~

另外如果你想更好地提升你的編程能力,學好C語言C 編程!彎道超車,快人一步!筆者這裡或許可以幫到你~

編程學習書籍分享:

c語言怎麼将字符串轉成數字(CC編程筆記)10

編程學習視頻分享:

c語言怎麼将字符串轉成數字(CC編程筆記)11

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

C語言C 編程學習交流圈子,點擊下方【了解更多】獲取更多學習資料幫助你學習成長哦~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved