atoi函數和std::stoi函數的不同點


atoi函數和std::stoi函數的不同點

出處不同

  • atoi()函數是C標准庫函數,頭文件為#include<stdlib.h>。同類型函數還包括atol()atof()strtol()strtof()等;
  • std::stoi()函數是C++11開始加入的STL標准模版庫的函數,頭文件為#include<string>。同類型函數還有std::stol()std::stoll()

功能不同

  • atoi()
    • 會跳過前面的空白字符(包括空格,tab符號等),直到遇到第一個非空字符,並在遇到下一個非數字字符時結束轉換;
    • 轉換的內容為正負符號和數字字符;
    • 並且返回值為十進制;
  • std::stoi()
    • 會跳過最前面的空白字符(包括空格,tab符號等),直到遇到第一個非空字符,並在遇到下一個非數字字符時結束轉換;
    • 轉換的內容為正負符號和數字字符;
    • 可以指定開始轉換的pos;
    • 可以轉換成十進制,八進制和十六進制;

異常處理不同

  • atoi()函數在轉換時,如果遇到入參str不能轉換或者str為空字符串時,返回值為0,不會拋出異常;
  • std::stoi()函數在轉換時,如果入參str是字母或者空字符串而無法轉換成數字時,會拋出std::invalid_argument異常,使用者必須手動處理異常,否則會造成程序crash;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM