C++ string转换为整型的两种方式

例:

string str=“123”;

int a=atoi(str.c_str());

int b=stoi(str);

可以用atoi或者stoi,atoi的效率高一些。

若是长整形,可用stoll

例:

string num="719387492312";
long long res=stoll(num);

 

### C++ 中将字符串转换整数的方法 #### 使用 `std::stoi` 函数 C++11 引入了标准库函数 `std::stoi` 来实现从字符串到整数转换。此方法简单易用,适用于大多数场景。 ```cpp #include <string> #include <iostream> int main() { std::string str = "123"; try { int num = std::stoi(str); std::cout << "Converted number: " << num << '\n'; } catch (const std::invalid_argument& e) { std::cerr << "Invalid argument\n"; } catch (const std::out_of_range& e) { std::cerr << "Out of range error\n"; } } ``` 该代码展示了如何利用 `std::stoi` 将字符串 `"123"` 转换整数值并处理可能发生的异常情况[^1]。 #### 使用 `stringstream` 另一种常见的做法是借助于 `<sstream>` 头文件中的 `std::istringstream` 类来进行转换操作。 ```cpp #include <sstream> #include <string> #include <iostream> int main() { std::string str = "456"; std::istringstream iss(str); int num; if (!(iss >> num)) { // Handle conversion failure. std::cerr << "Conversion failed.\n"; } else { std::cout << "Converted number: " << num << '\n'; } } ``` 这段代码通过创建一个输入流来解析给定的字符串,并尝试从中提取整数值。 #### 使用 `atoi` 或者 `strtol` 对于更早版本的标准库支持,可以考虑使用 `cstdlib` 提供的传统函数如 `atoi()` 和更为灵活安全的选择 `strtol()` 进行类似的转换工作。 ```cpp #include <cstdlib> // For atoi and strtol #include <cstring> // For strlen #include <iostream> int main() { const char* str = "-789"; // Using atoi() int numAtoi = std::atoi(str); std::cout << "Using atoi(): " << numAtoi << "\n"; // Using strtol(), which allows more control over parsing process char* endPtr; long numStrtol = std::strtol(str, &endPtr, 10); if (*endPtr != '\0') { std::cerr << "Non-digit characters encountered after number part.\n"; } std::cout << "Using strtol(): " << numStrtol << "\n"; } ``` 这里不仅示范了两种不同方式下的基本调用形式,同时也强调了当采用 `strtol` 时能够获得额外的信息以便更好地控制整个解析过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值