📅  最后修改于: 2023-12-03 15:37:54.116000             🧑  作者: Mango
在 C++ 中,有时我们需要从字符串中获取数字,例如将一个字符串转换为整数或浮点数,本篇文章将介绍一些方法来实现这个操作。
要将字符串转换为整数,可以使用 C++11 中的 stoi()
函数。这个函数将一个值为字符串的参数转换为整数,并返回转换后的整数值。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "123";
int num = stoi(str);
cout << "num = " << num << endl;
return 0;
}
输出:
num = 123
如果字符串中有非数字字符,stoi()
函数会抛出 invalid_argument
异常。如果转换后的结果超出了整数的范围,则会抛出 out_of_range
异常。
如果你需要将一个字符串转换为长整型,可以使用 stoll()
函数。这个函数与 stoi()
函数类似,但是将字符串转换为长整型。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "1234567890123456789";
long long num = stoll(str);
cout << "num = " << num << endl;
return 0;
}
输出:
num = 1234567890123456789
与 stoi()
函数一样,如果字符串中有非数字字符,stoll()
函数会抛出 invalid_argument
异常。如果转换后的结果超出了长整型的范围,则会抛出 out_of_range
异常。
如果需要将一个字符串转换为双精度浮点型,可以使用 stod()
函数,这个函数与 stoi()
和 stoll()
函数类似,但是将字符串转换为浮点数类型。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "3.1415926";
double num = stod(str);
cout << "num = " << num << endl;
return 0;
}
输出:
num = 3.14159
如果字符串中有非数字字符,stod()
函数会抛出 invalid_argument
异常。如果转换后的结果超出了双精度浮点型的范围,则会抛出 out_of_range
异常。
如果你需要将一个字符串转换为任意类型的值,可以使用 stringstream 类进行转换。stringstream 类提供了各种转换操作,包括将字符串转换为整数、浮点数和字符串。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str = "123";
stringstream ss(str);
int num;
ss >> num;
cout << "num = " << num << endl;
return 0;
}
输出:
num = 123
与 stoi()
、stoll()
和 stod()
函数不同,使用 stringstream 类进行转换需要进行一些额外的步骤。首先,你需要创建一个 stringstream 对象并将字符串传递给它。然后,你可以使用 >>
运算符来将值从 stringstream 中提取出来,并将其存储在变量中。
在 C++ 中,有许多方法可以从字符串中获取数字。我们可以使用 stoi()
、stoll()
和 stod()
函数来转换为整数、长整型和双精度浮点型,也可以使用 stringstream 类进行转换。无论使用哪种方法,都需要注意异常处理和边界条件。