C++中string转int常用方法包括:1. std::stoi,简洁但需异常处理;2. std::istringstream,类型安全但性能较低;3. atoi,简单但无错误反馈;4. std::from_chars(C++17),高效且无异常,推荐高性能场景使用。

在C++中,将string转换为int有多种方式,选择合适的方法取决于你的需求,比如是否需要错误处理、性能要求或兼容性。以下是几种常用且可靠的实现方法。
std::stoi(string to integer)是C++11引入的最简单直接的方法,能将字符串转换为整数。
示例:#include <string>
#include <iostream>
int main() {
std::string str = "12345";
try {
int num = std::stoi(str);
std::cout << "转换结果: " << num << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "无效参数: " << e.what() << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "数值超出范围: " << e.what() << std::endl;
}
return 0;
}
优点:语法简洁,自动跳过前导空格,支持十进制、十六进制(以0x开头)等格式。
注意:可能抛出异常,需用try-catch处理非法输入或溢出。
利用输入字符串流进行类型转换,适合在复杂解析场景中使用。
示例:#include <sstream>
#include <string>
#include <iostream>
int main() {
std::string str = "67890";
std::istringstream iss(str);
int num;
if (iss >> num) {
std::cout << "转换成功: " << num << std::endl;
} else {
std::cerr << "转换失败" << std::endl;
}
return 0;
}
优点:类型安全,可结合其他类型读取;
缺点:相对繁琐,性能略低。
atoi来自C标准库,接受const char*,不抛异常,转换失败返回0。
立即学习“C++免费学习笔记(深入)”;
示例:#include <cstdlib>
#include <string>
#include <iostream>
int main() {
std::string str = "42";
int num = std::atoi(str.c_str());
std::cout << "结果: " << num << std::endl;
return 0;
}
优点:简单快速,无需异常处理;
缺点:无法区分“0”和转换失败,缺乏错误反馈,不推荐用于健壮程序。
现代C++推荐方式,高效且无异常,适用于高性能场景。
示例:#include <charconv>
#include <string>
#include <iostream>
#include <array>
int main() {
std::string str = "1000";
int value;
auto result = std::from_chars(str.data(), str.data() + str.size(), value);
if (result.ec == std::errc()) {
std::cout << "转换成功: " << value << std::endl;
} else {
std::cerr << "转换失败" << std::endl;
}
return 0;
}
优点:零开销抽象,不抛异常,速度快;
缺点:语法稍复杂,仅C++17及以上支持。
基本上就这些常见的方法。日常开发推荐使用std::stoi(注意异常处理),对性能敏感的场景可选用std::from_chars。避免在关键逻辑中使用atoi,因其错误处理能力太弱。
以上就是c++++中如何将string转换为int_c++字符串转整数的常用实现方式的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号