首页 > 解决方案 > C ++将数字和逗号的char数组转换为整数列表?

问题描述

我在 C++ 中有一个套接字设置,它接收缓冲区数组中的字符流

char buffer[MAXSIZE];

中的字符buffer只能是数字0、、1...9或逗号,。我想转换一个示例缓冲区内容,例如

buffer = {'1','2' , ',' , '3' , ',' , '5','6' , ...};

其中最终字符位置存储在变量len中,到整数列表

integers = {12 , 3 , 56};

我可以通过遍历字符列表,获取每个数字,将其乘以 10 并添加下一个数字,直到遇到逗号,来拼凑出一种愚蠢的方法,。但我想这种方法对于大数据速率来说太慢了。

在 C++ 中进行这种转换的正确方法是什么?

标签: c++arrayscharint

解决方案


假设std::vector可以使用 a ,你可以试试这个:

std::vector<int> integers;
int currentNumber = 0;
for(char c = ' ', int i = 0; i < MAX_SIZE; i++) {
    c = buffer[i];
    if(c == ',') {
        integers.push_back(currentNumber);
        currentNumber = 0;
    } else {
        currentNumber *= 10;
        currentNumber += c - '0';
    }
}
integers.push_back(currentNumber);

推荐阅读