将IPV6字符串转换为C ++中的uint16_t数组

问题描述 投票:0回答:1

我下面有一个IPV6字符串作为示例:

"0001:0002:0003:0004:0005:0006:0007:0008"

[我正在尝试找到最干净的方法将其转换为包含1-8的8个值的uint16_t数组。

我无法使用inet_pton()

我可以创建自己的解析函数,但是我试图让sscanf如下工作而没有成功。任何帮助,将不胜感激。编辑:值将始终以十六进制格式表示在字符串中。

char *pString        = "0001:0002:0003:0004:0005:0006:0007:0008";
uint16_t* uintValues = new uint16_t[8]{};
sscanf(pString,"%s%04x:", uintValues );
c++ c string scanf uint16
1个回答
0
投票
istringstream in("0001:0002:0003:0004:0005:0006:0007:0008");
uint16_t[8] out;
char colon;
in >> out[0] >> colon >> out[1] >> colon >> out[2] >> colon >> out[3] >> colon >> out[4] >> colon >> out[5] >> colon >> out[6] >> colon >> out[7];

完全没有错误检查,可能有问题也可能没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.