三维float数组字符串转为三维数组【c++代码】

主要的处理场景为笔迹,所以input形式如下

input形式

在这里插入图片描述

cpp处理代码

#include<iostream>
#include<fstream>
#include<vector>
#include <string>
using namespace std;


string readFromTXT(string& data){
    //读取002.txt文件到string中
    ifstream infile;
    infile.open("002.txt",ios::in);
    if(!infile)
    {
        cout<<"open error!"<<endl;
        exit(1);
    }
    
    infile>>data;
    infile.close();
    return data;
}

void string2ThreeDimensionalMatrix(string& data,vector<vector<vector<float>>>& iniStroke){
    for (int i = 0;i<data.size();i++){
        vector<vector<float>> iniPoints;
        while (data[i] != '}'){
            vector<float> point;
            while (data[i] != '}'){
                while (data[i] == '{'){
                    i++;
                }
                string temp;
                while (data[i] != ',' && data[i] != '}'){
                    temp += data[i];
                    i++;
                }
                point.push_back(stof(temp));
                if (data[i] == ','){
                    i++;
                }
            }
            iniPoints.push_back(point);
            if (data[i] == '}'){
                i++;
            }
            if (i<data.size()&&data[i] == ',') {
                i++;
            }
        }
        iniStroke.push_back(iniPoints);
        if (data[i] == '}'){
            i++;
        }
    }
    return;
}
int main()
{
    string data;
    readFromTXT(data);
    //对读入的data进行处理,去除头尾的括号
    data.erase(0,1);
    data.erase(data.size()-1,1);
    
    vector<vector<vector<float>>> iniStroke;
    string2ThreeDimensionalMatrix(data,iniStroke);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Peanut31434331/article/details/133561269
今日推荐