📌  相关文章
📜  在 CC++ 中将字符串转换为整数数组(1)

📅  最后修改于: 2023-12-03 15:07:37.996000             🧑  作者: Mango

在 C/C++ 中将字符串转换为整数数组

在程序开发中,我们常常需要将一个字符串转换为整数数组。例如,将"123"转换为{1,2,3}。在 C/C++ 中,我们可以通过以下方法实现:

方法一:使用字符串流 stringstream
#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>>(输入运算符),将每个数字逐一读取到数组中。需要注意的是,该方法仅适用于以空格或换行符作为分隔符的字符串。

方法二:使用 C 语言库函数 sscanf
#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++ 中将字符串转换为整数数组的三种方法。在实际开发中,应根据需要选择合适的方法。