C++ 逐行读取包含不同类型变量的文本文件,并为每个相应变量指定值

C++ 逐行读取包含不同类型变量的文本文件,并为每个相应变量指定值,c++,file,text,input,C++,File,Text,Input,我试图处理一段时间的文本文件,我搜索了论坛,但不幸的是,我不知道如何才能完成这项任务。我想做的是从文本文件中读取一些变量,并将数字分配给不同的变量。文本文件的输入格式如下: n=1; m=1; l= [[1,2,3], [4,5,6]]; a1= [ [2 2 2]]; a2=[[4,4,4] ]; 可以看出,变量有不同的类型。因此,我希望代码将1分配给n,1分配给g,并且能够分配对应于a1和a2的数值(它在不同的时间段具有不同的长度)。我想关键是在每一行中找到变量的名称,如果它是n,

我试图处理一段时间的文本文件,我搜索了论坛,但不幸的是,我不知道如何才能完成这项任务。我想做的是从文本文件中读取一些变量,并将数字分配给不同的变量。文本文件的输入格式如下:

n=1;

m=1;

l= [[1,2,3],
[4,5,6]];

a1= [ [2 2 2]];

a2=[[4,4,4] ];
可以看出,变量有不同的类型。因此,我希望代码将1分配给n,1分配给g,并且能够分配对应于a1和a2的数值(它在不同的时间段具有不同的长度)。我想关键是在每一行中找到变量的名称,如果它是n,则将n分配给变量n,例如,如果变量是a1,则将2分配给a1。在每一行中,在找到变量名后,我尝试读取“=”后面的数值,但没有成功。以下是我迄今为止所做的尝试:

std::string line, sub;
ifstream myfile;

//test for reading
std::ifstream file("Input.dat");
std::string name;
while (file >> name) {

    getline(file, name);
    cout <<":"<< name << endl;
}
/*while (file >> name) {
    int a;
    int b,c;

    file >> a >> b;
std::cout << name << ' ' << a * b << '\n';
}*/

//end of test

file.close();
//reading from the .datfile
    myfile.open("Input.dat");
while (std::getline(myfile, line))
{
    std::stringstream  linestream(line);
    if (line.find("n = ") == string::npos)
        //      

        continue;
    istringstream ss(line);// copies current line to ss
    double x, y, z;
    ss >> x >> y >> z;
    if (!ss)
std::字符串行,sub;
ifstreammyfile;
//阅读测验
std::ifstream文件(“Input.dat”);
std::字符串名;
while(文件>>名称){
getline(文件、名称);
cout a>>b;
标准::couty>>z;
如果(!ss)

“我没有成功”在解释问题时一点帮助都没有。另外,你也没有问任何问题。你应该使用调试器来找出你的代码是什么,它与你期望的代码有什么不同,以及为什么它与你期望的不同。这个问题看起来太宽,不适合这里,但也许这可以让你开始:首先,你的输入文本不容易解析。其次,对于这种类型的任务您可以使用std::stringstream和容器来堆叠数字。您也可以使用正则表达式,但这有点困难。我想可能有一些方法可以编写此代码,其中一种方法是,如果我们尝试读取一个字符两次,我的意思是,我们读取一个字符一次是整数,一次是字符格式。有什么解决方案吗?