std::string str = "123";
int i = atoi(str.c_str()); // 需包含 <cstdlib>
#include <string>
std::string str = "123";
int i = std::stoi(str); // 拋出例外於無效輸入
long l = std::stol(str);
float f = std::stof(str);
double d = std::stod(str);
| 特性 | atoi | std::stoi |
|---|---|---|
| 錯誤處理 | 靜默回傳 0 | 拋出 std::invalid_argument / std::out_of_range |
| 支援進位制 | 僅 10 進位 | 可指定 base(2~36) |
| 字串前導空白 | 自動忽略 | 自動忽略 |
| 標準 | C | C++11 |
現代 C++ 專案請統一使用 std::stoi 系列,獲得型別安全與明確錯誤報告。