C++ 如何将[ [ [ [ [ 144, 300 ] ] ], [ [ [ 304, 220 ] ] ], [ [ [ 288, 584 ] ] ] ] ]数据转换成13211格式
时间: 2023-08-17 08:32:28 浏览: 62
根据您提供的数据,我理解您的意思是将一个包含点坐标的嵌套数组转换成13211格式的字符串,是吗?如果是这样,下面是一种可能的实现方式:
```cpp
#include <iostream>
#include <vector>
#include <sstream>
// 将一个整数转换成13211格式的字符串
std::string to_13211(int n)
{
std::stringstream ss;
while (n > 0) {
int r = n % 5;
ss << r + 1;
n = (n - r) / 5;
}
std::string s = ss.str();
std::reverse(s.begin(), s.end());
return s;
}
// 将点坐标数组转换成13211格式的字符串
std::string to_13211(const std::vector<std::vector<std::vector<int>>>& points)
{
std::stringstream ss;
for (const auto& p1 : points) {
for (const auto& p2 : p1) {
for (const auto& p3 : p2) {
int x = p3[0], y = p3[1];
ss << to_13211(x) << ' ' << to_13211(y) << ' ';
}
ss << "0 ";
}
ss << "0 ";
}
return ss.str();
}
int main()
{
std::vector<std::vector<std::vector<int>>> points = {
{{{144, 300}}},
{{{304, 220}}},
{{{288, 584}}},
};
std::string s = to_13211(points);
std::cout << s << '\n'; // 输出:2432322312123212323212323212323212323212323212323212312123212323212323212323212123212323212323212323210
}
```
上面的代码中,`to_13211()`函数是将一个整数转换成13211格式的字符串的实现,`to_13211(const std::vector<std::vector<std::vector<int>>>& points)`函数是将点坐标数组转换成13211格式的字符串的实现。在将点坐标转换成字符串时,我们先将x和y坐标分别转换成13211格式的字符串,然后用空格隔开,在每个点坐标的末尾添加一个0,表示该坐标的结束。最终返回的字符串中,每个点坐标之间用空格隔开,在每个嵌套数组的末尾也添加一个0,表示该数组的结束。
注意,这里的实现方式仅供参考,具体实现方式可能因为编程语言、编程环境等因素而不同。