C++如何将字符串转换为整数_C++ stoi函数与stringstream用法详解

使用stoi函数可将字符串转换为整数,需包含头文件,支持指定进制和记录转换位置;2. 示例中”12345″被成功转为整数12345。

c++如何将字符串转换为整数_c++ stoi函数与stringstream用法详解

在C++中,将字符串转换为整数是常见的操作,尤其在处理用户输入或解析文本数据时。C++提供了多种方式实现这一功能,其中最常用的是stoi函数和stringstream类。下面详细介绍它们的用法、特点及注意事项。

使用 stoi 函数转换字符串为整数

stoi 是 C++11 引入的字符串处理函数,定义在 头文件中,用于将 std::string 直接转换为 int 类型。

基本语法:

int stoi(const std::string& str, size_t* pos = 0, int base = 10);str:要转换的字符串。pos:可选参数,用于记录转换结束的位置(即第一个非法字符的索引)。base:可选参数,指定进制,默认为十进制(10),也可设为2、8、16等。

示例代码:

立即学习“C++免费学习笔记(深入)”;

std::string s = “12345”;
int num = stoi(s);
std::cout

如果字符串包含非数字前缀,stoi 会尝试从第一个有效数字开始转换,直到遇到非法字符。若无法转换,会抛出异常:

当字符串为空或不包含有效数字时,抛出 std::invalid_argument。当数值超出 int 范围时,抛出 std::out_of_range

因此建议使用 try-catch 捕获异常:

try {
  std::string s = “abc123”;
  int num = stoi(s);
} catch (const std::invalid_argument& e) {
  std::cerr } catch (const std::out_of_range& e) {
  std::cerr }

使用 stringstream 进行类型转换

stringstream 是 C++ 标准库中用于处理字符串流的类,定义在 头文件中。它支持多种类型之间的转换,适用于更复杂的格式化输入输出。

基本用法步骤:

创建一个 stringstream 对象,并将字符串传入。使用提取运算符 >> 将内容读取为整数。检查转换是否成功。

示例代码:

立即学习“C++免费学习笔记(深入)”;

#include

std::string s = “456”;
std::stringstream ss(s);
int num;
if (ss >> num) {
  std::cout } else {
  std::cout }

stringstream 的优势在于可以处理混合内容:

std::string s = “123 abc”;
std::stringstream ss(s);
int num;
std::string word;
ss >> num >> word;
// num = 123, word = “abc”

但要注意,stringstream 不会自动抛出异常,需手动检查状态标志,如 fail() 或 bad()。

stoi 与 stringstream 的对比

两者各有适用场景:

stoi 更简洁,适合简单直接的字符串转整数操作,尤其是只关心结果且能处理异常的情况。stringstream 更灵活,适合解析复杂格式的字符串,比如带空格、多个字段或混合类型的输入。

性能方面,stoi 通常更快,因为它专为单一转换设计;而 stringstream 构造开销略大,但复用性好。

基本上就这些。根据实际需求选择合适的方法即可。注意输入验证和异常处理,避免程序崩溃。

以上就是C++如何将字符串转换为整数_C++ stoi函数与stringstream用法详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 12:23:09
下一篇 2025年12月19日 12:23:13

相关推荐

发表回复

登录后才能评论
关注微信