将string变为int 的几种方法方法比较

本文对比了C#中将String解析为Int的三种方法:Int32.Parse(), Convert.ToInt32(), Int32.TryParse()的区别,包括异常处理、参数要求及使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string source = "1412";
int result = 0;
re
// 使用Convert.ToInt32(string value);
result = Convert.ToInt32(source);
// 使用Int32.Parse(string value);
result = Int32.Parse(source);
// 使用Int32.TryParse(string s, out int result);
Int32.TryParse(source, out result);
三种方法的简单区别,可以延伸出很多内容,以及在判断的使用

如果解析失败,
Int32.Parse(source)总会抛出异常;
Convert.ToInt32(source)在source为null的情况下不会抛出异常而是简单的返回0给调用方;
Int32.TryParse(source, result)则无论如何都不抛出异常,只会返回true或false来说明解析是否成功,如果解析失败,调用方将会得到0值。

Int32.Parse()的异常
如果 string 为空,则抛出 ArgumentNullException 异常;
如果 string 格式不正确,则抛出 FormatException 异常;
如果 string 的值小于 MinValue 或大于 MaxValue 的数字,则抛出 OverflowException 异常。
当传递参数为非数字的string,Int32.TryParse不会抛出异常

int result = Int32.Parse(textBox1.Text.Trim());
int result = Int32.Parse(textBox1.Text, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite);

double result = Double.Parse("1.412e2", NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
int result = Int32.Parse(" 1.412e3 ", NumberStyles.Float);

------参看阅读----

Allen Lee 如何把string解析为int?[C#]

jiangchongwei 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别

转载于:https://www.cnblogs.com/Rampage/archive/2011/11/29/2267800.html

### C++ 中将 `string` 转换为 `int` 在 C++ 中,可以采用多种方式实现从 `string` 到 `int` 的类型转换。以下是几种常见的方法及其适用场景: #### 方法一:使用标准库函数 `stoi` C++11 引入了 `std::stoi` 函数来处理字符串到整数的转换。该函数简单易用,并能自动检测并抛出异常以应对非法输入。 ```cpp #include <iostream> #include <string> int main() { std::string str = "123"; try { int num = std::stoi(str); std::cout << "Converted number: " << num << std::endl; } catch (const std::invalid_argument& e) { std::cerr << "Invalid argument: " << e.what() << std::endl; } } ``` 此方法适用于现代编译器环境下的程序开发[^1]。 --- #### 方法二:利用 `stringstream` 通过创建一个 `std::stringstream` 对象并将目标字符串写入其中,随后提取对应的数值类型数据完成转换操作。 ```cpp #include <sstream> #include <string> int main() { std::string str = "456"; std::stringstream ss(str); int num; if (!(ss >> num)) { throw std::runtime_error("Conversion failed"); } std::cout << "Converted number: " << num << std::endl; } ``` 这种方法较为灵活,在需要同时解析多个不同类型的数据时尤为有用。 --- #### 方法三:调用传统 C 风格函数 `atoi` 或其变体 尽管可以直接使用 `atoi(const char*)` 来执行简单的字符串至整数转化任务,但由于它无法有效报告错误情况(例如遇到非数字字符),因此推荐仅限于非常基础的应用场合下考虑选用这种方式;另外需要注意的是,由于传参需求的缘故,这里还需要借助成员函数 `.c_str()` 将原本属于 STL 容器类型的对象转变成传统的 NULL 结尾数组形式以便兼容旧接口定义要求。 ```cpp #include <cstdlib> // for atoi() #include <string> int main() { std::string str = "789"; const char* cstr = str.c_str(); int num = ::atoi(cstr); std::cout << "Converted number: " << num << std::endl; } ``` 不过鉴于上述局限性以及更优替代方案的存在,通常建议优先尝试前两种途径之一[^3]。 综上所述,对于大多数实际应用场景而言,“方法一”即运用内置工具集所提供的专门解决此类问题的功能最为便捷高效同时也具备良好的可读性和安全性特征[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值