简介
在C++中,我们经常需要将字符串转换为整数,而C++的标准库中提供了一个非常方便的函数stoi,用于将字符串转换为整数。在本文中,我们将详细介绍stoi函数的用法和注意事项。
stoi函数的用法
stoi函数的定义如下:
int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );
str:需要转换为整数的字符串。pos(可选):用于存储第一个不能转换为整数的字符的索引位置。base(可选):进制数,默认为十进制。
以下是stoi函数的使用示例:
#include <iostream>
#include <string>
int main() {
std::string str = "12345";
int num = std::stoi(str);
std::cout << num << std::endl;
return 0;
}
输出结果为:
12345
注意事项
在使用stoi函数时,需要注意以下几点:
- 字符串必须是有效的整数表示,包括可选的符号和数字字符。
- 如果字符串的第一个字符不是有效的数字字符或正负号,则会抛出
std::invalid_argument异常。 - 如果字符串的转换超出了整数类型的表示范围,则会抛出
std::out_of_range异常。 - 可以使用
pos参数获取第一个不能转换为整数的字符的索引位置。如果不提供pos参数,则会忽略剩余的字符串。 - 可以使用
base参数指定进制数,如10表示十进制,16表示十六进制。默认为十进制。
以下是一些stoi函数使用时的示例和异常处理:
#include <iostream>
#include <string>
int main() {
std::string str1 = "12345";
int num1 = std::stoi(str1);
std::cout << num1 << std::endl;
std::string str2 = "12345abc";
try {
int num2 = std::stoi(str2);
std::cout << num2 << std::endl;
} catch (const std::invalid_argument& e) {
std::cout << "Invalid argument: " << e.what() << std::endl;
}
std::string str3 = "99999999999999999999";
try {
int num3 = std::stoi(str3);
std::cout << num3 << std::endl;
} catch (const std::out_of_range& e) {
std::cout << "Out of range: " << e.what() << std::endl;
}
std::string str4 = "12345abc";
std::size_t pos;
int num4 = std::stoi(str4, &pos);
std::cout << "Partially converted number: " << num4 << std::endl;
std::cout << "First non-converted character index: " << pos << std::endl;
std::string str5 = "FF";
int num5 = std::stoi(str5, nullptr, 16);
std::cout << num5 << std::endl;
return 0;
}
输出结果为:
12345
Invalid argument: stoi
Out of range: stoi
Partially converted number: 12345
First non-converted character index: 5
255
总结
stoi函数是C++标准库中用于字符串转整数的函数,非常方便和实用。通过本文的介绍,我们学习了stoi函数的用法和注意事项,希望对你在使用C++进行字符串转整数操作时有所帮助。
评论 (0)