c++ - C ++将数字和逗号的char数组转换为整数列表?
问题描述
我在 C++ 中有一个套接字设置,它接收缓冲区数组中的字符流
char buffer[MAXSIZE];
中的字符buffer
只能是数字0
、、1
...9
或逗号,
。我想转换一个示例缓冲区内容,例如
buffer = {'1','2' , ',' , '3' , ',' , '5','6' , ...};
其中最终字符位置存储在变量len
中,到整数列表
integers = {12 , 3 , 56};
我可以通过遍历字符列表,获取每个数字,将其乘以 10 并添加下一个数字,直到遇到逗号,来拼凑出一种愚蠢的方法,
。但我想这种方法对于大数据速率来说太慢了。
在 C++ 中进行这种转换的正确方法是什么?
解决方案
假设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);
推荐阅读
- python - Python36\Scripts starts on wrong python version
- machine-learning - Difference between OpenAI Gym environments 'CartPole-v0' and 'CartPole-v1'
- html - 我想使文本居中一点,但它跳到了新行
- java - android pie 9.0 mobile:org.json.JSONException:java.lang.String类型的值CLEARTEXT无法转换为JSONObject
- python - Python中的按钮点击计数器
- java - 以编程方式禁用“音量键快捷键”
- javascript - React-final-form 在某些表单字段上触发验证
- javascript - 手动在自动优化插件中加载 JS
- linux - netstat 进程 ID 接收的数据包数
- c# - 使用 AND、OR、* 过滤基于标签的大字符串集合