- 利用库函数实现
在 C++ 中,可以使用 stoi()
函数将字符串转为整型,这个函数定义在头文件 <string>
中。stoi()
函数有多个重载版本,可以处理不同类型的字符串。
代码示例:
#include <iostream>
#include <string>
#include <typeinfo> // 查看数据类型需要包含的头文件
using namespace std;
int main() {
string str = "1234";
int num = stoi(str);
// The integer is: 1234
cout << "The integer is: " << num << endl;
cout << typeid(num).name() << endl; // int
return 0;
}
在上面的代码中,首先定义一个字符串 str
,表示一个整数值,然后使用 stoi()
将字符串转换为整型。最后,将转换后的整型输出到控制台。
【注意】:如果字符串不能被转换为整数,则 stoi
函数会抛出一个 std::invalid_argument
异常,如果转换后的值超出了整型范围,则会抛出一个 std::out_of_range
异常。所以需要用户自己处理异常。
- 自己手动实现
代码示例:
#include <iostream>
#include <typeinfo> // 查看数据类型需要包含的头文件
using namespace std;
int strToint(string s)
{
int ans = 0;
for(int i = 0; i < s.size(); i++)
{
ans = ans * 10 + s[i] -'0';
}
return ans;
}
int main()
{
int ans = strToint("1234");
cout << ans << endl; // 1234
cout << typeid(strToint("1234")).name() << endl; // int
return 0;
}
- 利用
atoi()
代码示例:
#include<iostream>
#include<string>
#include<stdlib.h> // 部分编译器需要包含此头文件
using namespace std;
int main()
{
string s = "1234";
int num = atoi(s.c_str()); // 将C++字符串转化为C字符串
cout << num << endl; // 1234
return 0;
}
【注意】:c_str()
返回的是 const char*
,如果要对C字符数组做出修改则是不允许的。因此要想转化为可以修改的C字符数组,则需要使用 strcpy
。