最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++中stoi函數(shù)的使用小結(jié)

 更新時(shí)間:2026年02月02日 09:08:35   作者:crane_in_sky  
本文主要介紹了c++中stoi函數(shù)的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

std::stoi是C++標(biāo)準(zhǔn)庫中的一個(gè)函數(shù),用于將字符串轉(zhuǎn)換為整數(shù)類型。它的全名是std::string to int,所以stoi就是string to int的縮寫。

函數(shù)原型如下:

int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );

參數(shù)解釋:

  • str:要轉(zhuǎn)換的字符串。
  • pos:可選參數(shù),表示轉(zhuǎn)換后的字符串的結(jié)束位置。如果提供了這個(gè)參數(shù),函數(shù)會將轉(zhuǎn)換后的字符串的結(jié)束位置存儲在它所指向的位置上。
  • base:可選參數(shù),用于指定字符串表示的數(shù)的進(jìn)制。默認(rèn)值是10。

函數(shù)功能: std::stoi會從字符串的開頭開始,依次讀取字符,直到遇到非數(shù)字字符或字符串結(jié)束。它將讀取到的數(shù)字字符解析為整數(shù),并返回轉(zhuǎn)換后的整數(shù)值。

如果字符串中的第一個(gè)字符是非數(shù)字字符,或者字符串為空,或者不包含任何數(shù)字字符,std::stoi會拋出一個(gè)std::invalid_argument異常。如果轉(zhuǎn)換后的整數(shù)值超出了所表示的整數(shù)類型的范圍,std::stoi會拋出一個(gè)std::out_of_range異常。

示例用法:

#include <iostream>
#include <string>

int main() {
    std::string str = "12345";
    int num = std::stoi(str);
    std::cout << num << std::endl;  // 輸出:12345
    return 0;
}

上述代碼將字符串"12345"轉(zhuǎn)換為整數(shù)12345,并輸出結(jié)果。

示例2:使用 idx 參數(shù)

#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
    std::string str = "123abc";
    std::size_t idx;
    try {
        int num = std::stoi(str, &amp;idx);
        std::cout &lt;&lt; "轉(zhuǎn)換結(jié)果: " &lt;&lt; num &lt;&lt; std::endl;
        std::cout &lt;&lt; "轉(zhuǎn)換停止位置: " &lt;&lt; idx &lt;&lt; std::endl;
    } catch (const std::invalid_argument&amp; e) {
        std::cout &lt;&lt; "無效的輸入: " &lt;&lt; e.what() &lt;&lt; std::endl;
    } catch (const std::out_of_range&amp; e) {
        std::cout &lt;&lt; "數(shù)值超出范圍: " &lt;&lt; e.what() &lt;&lt; std::endl;
    }
    return 0;
}

在這個(gè)示例中,我們使用了 std::stoi 的第二個(gè)參數(shù) idx,它存儲了轉(zhuǎn)換停止的位置,即字符串中 “123” 之后的字符 ‘a’ 的索引。

示例3:使用 base 參數(shù)

#include &lt;iostream&gt;
#include &lt;string&gt;

int main() {
    std::string str = "1a2";
    try {
        int num = std::stoi(str, nullptr, 16); // 將字符串視為十六進(jìn)制數(shù)
        std::cout &lt;&lt; "十六進(jìn)制轉(zhuǎn)換結(jié)果: " &lt;&lt; num &lt;&lt; std::endl;
    } catch (const std::invalid_argument&amp; e) {
        std::cout &lt;&lt; "無效的輸入: " &lt;&lt; e.what() &lt;&lt; std::endl;
    } catch (const std::out_of_range&amp; e) {
        std::cout &lt;&lt; "數(shù)值超出范圍: " &lt;&lt; e.what() &lt;&lt; std::endl;
    }
    return 0;
}

在這個(gè)示例中,我們使用了 std::stoi 的第三個(gè)參數(shù) base,將字符串 “1a2” 視為十六進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換。

異常

如果轉(zhuǎn)換失?。ɡ?,字符串不包含有效的整數(shù)),stoi() 會拋出一個(gè) std::invalid_argument 異常。如果轉(zhuǎn)換后的數(shù)字超出了 int 類型的范圍,會拋出 std::out_of_range 異常。

注意事項(xiàng)

  • 確保字符串只包含有效的數(shù)字字符,否則 stoi() 會拋出異常。
  • 如果需要處理可能拋出的異常,應(yīng)該使用 try-catch 塊來捕獲這些異常。
  • 如果輸入的字符串不是有效的整數(shù)表示,std::stoi 會拋出 std::invalid_argument 異常。
  • 如果字符串表示的數(shù)值超出了 int 類型的范圍,std::stoi 會拋出 std::out_of_range 異常。
  • 使用 idx 參數(shù)時(shí),如果轉(zhuǎn)換失敗,idx 將被設(shè)置為 0。
  • 使用 base 參數(shù)時(shí),如果設(shè)置為0,函數(shù)會根據(jù)字符串的前綴自動(dòng)確定數(shù)制。如果字符串以 “0x” 或 “0X” 開頭,表示十六進(jìn)制;如果以 “0” 開頭,表示八進(jìn)制;否則,表示十進(jìn)制。

到此這篇關(guān)于c++中stoi函數(shù)的使用小結(jié)的文章就介紹到這了,更多相關(guān)c++ stoi函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

新平| 大理市| 新宾| 河北省| 蓝山县| 文山县| 漳浦县| 凤凰县| 监利县| 四子王旗| 唐河县| 铜川市| 隆昌县| 渑池县| 北辰区| 科技| 塘沽区| 隆子县| 衡南县| 丰台区| 阳西县| 嘉义县| 都匀市| 即墨市| 深泽县| 昆明市| 镇安县| 开江县| 集安市| 通城县| 旅游| 宁化县| 武穴市| 浦东新区| 乡宁县| 临海市| 蒙城县| 江津市| 咸宁市| 濉溪县| 朝阳区|