📅  最后修改于: 2023-12-03 15:07:37.996000             🧑  作者: Mango
在程序开发中,我们常常需要将一个字符串转换为整数数组。例如,将"123"转换为{1,2,3}。在 C/C++ 中,我们可以通过以下方法实现:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str = "123456";
stringstream ss(str);
int num;
int arr[6];
int i = 0;
while (ss >> num)
{
arr[i++] = num;
}
for (int j = 0; j < i; j++)
{
cout << arr[j] << " ";
}
return 0;
}
该方法使用了流库(stringstream)中的operator>>(输入运算符),将每个数字逐一读取到数组中。需要注意的是,该方法仅适用于以空格或换行符作为分隔符的字符串。
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
string str = "123456";
int arr[6];
int i = 0;
while (sscanf(str.c_str() + i, "%1d", &arr[i]) == 1)
{
i++;
}
for (int j = 0; j < i; j++)
{
cout << arr[j] << " ";
}
return 0;
}
该方法使用了 C 语言库函数 sscanf,每次读取一个数字,并将读取的结果存储在数组中。需要注意的是,该方法需要将字符串转换为 C 语言风格的字符串,并指明每次读取的位数(本例中为1位)。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "123456";
int arr[6];
int i = 0;
for (int j = 0; j < str.size(); j++)
{
if (str[j] >= '0' && str[j] <= '9')
{
arr[i++] = str[j] - '0';
}
}
for (int j = 0; j < i; j++)
{
cout << arr[j] << " ";
}
return 0;
}
该方法使用了手动解析字符的方式,每次判断字符是否为数字,如果是则将其转换为整数并存储在数组中。需要注意的是,该方法需要对每个字符进行判断,比较麻烦。
以上就是在 C/C++ 中将字符串转换为整数数组的三种方法。在实际开发中,应根据需要选择合适的方法。