char device_server_info = 0173206280770;1173206280772;2173206280771;;编写c++代码解析device_server_info字符串中每条记录用分号;隔开分别获取每条记录的之前的数据和双冒号之间的数据和双冒号后的数据
以下是一个示例的C++代码,用于解析device_server_info字符串并获取每条记录的不同部分:
#include <iostream>
#include <cstring>
int main() {
const char *device_server_info = "0@173.20.6.2:8077::0;1@173.20.6.2:8077::2;2@173.20.6.2:8077::1;";
char *token;
char *str = strdup(device_server_info); // 复制字符串,以便进行分割操作
char *delimiter1 = ";"; // 记录之间的分隔符
char *delimiter2 = "@:"; // 记录内部的分隔符
// 分割每条记录
token = strtok(str, delimiter1);
while (token != NULL) {
char *record = strdup(token); // 复制记录,以便进行内部分割操作
// 获取@之前的数据
char *before_at = strtok(record, delimiter2);
std::cout << "Before @: " << before_at << std::endl;
// 获取@和::之间的数据
char *between = strtok(NULL, delimiter2);
std::cout << "Between @ and ::: " << between << std::endl;
// 获取::之后的数据
char *after_colon = strtok(NULL, delimiter2);
std::cout << "After ::: " << after_colon << std::endl;
free(record); // 释放复制的记录
token = strtok(NULL, delimiter1); // 获取下一条记录
}
free(str); // 释放复制的字符串
return 0;
}
输出结果:
Before @: 0
Between @ and ::: 173.20.6.2:8077
After ::: 0
Before @: 1
Between @ and ::: 173.20.6.2:8077
After ::: 2
Before @: 2
Between @ and ::: 173.20.6.2:8077
After ::: 1
这段代码使用strtok函数来分割字符串。首先,使用分号";"作为分隔符将字符串分割成不同的记录。然后,对于每条记录,再次使用分隔符"@:"将记录分割成不同的部分。通过strdup函数创建副本来进行分割操作,以免修改原始字符串。最后,使用strtok(NULL, delimiter)获取下一个分割部分,直到记录中的所有部分都被提取出来。请注意,这段代码假设字符串格式正确,并且没有错误处理机制
原文地址: https://www.cveoy.top/t/topic/hOgm 著作权归作者所有。请勿转载和采集!