在c++中从文件中读取字符串、整型和双精度的混合



我有一个。txt文件,看起来像这样:

1
Some string
Some other string
3
10,5
20
20

我需要将所有这些值读取到不同类型的变量中。到目前为止,从文件中读取整型和双精度似乎是有效的,但接下来是字符串,有趣的事情开始了。
似乎字符串被读取,但然后我试图输出它们,整个控制台只是崩溃。

编辑:我所说的"崩溃"是指出现"没有响应"类型的消息。我使用的代码基本上是:

ifstream file;
file.open ("C:pathfile.txt");
file >> int1;
getline(file, string1);
getline(file, string2);
file >> int2;
file >> double1;
file >> double2;
file >> double3;
// ....
file.close();

编辑2:不知怎么的,int1的值不是1而是-858993460.

我真的很困惑…

编辑3:现在所有的值都被设置,但它们不是在文件中写入的值。第一个int和第一个字符串是可以的,但第二个字符串是红色的,表示0,双精度对象都是红色的,表示

-92559631349317830000000000000000000000000000000000000000000000

由于文件中有更多的值,并且它们接受类型模式,我运行了一个循环来获得它们,问题是在第一次读取值后不再是红色的

文件。open("C: file.txt路径");

is转义字符

解决

文件。open("C: file.txt路径");

如果这些类型以相同的方式重复,我建议:

ifstream str("MyFile.dat");
int counter = 0;
const int MAX_DATA_CNT = 4;
const int DOUBLE = 1;
const int INT = 2;
....
while (!str)
{
  if (++counter == MAX_DATA_CNT)
      counter = 1;
  switch(counter)
  {
    case DOUBLE: // input double
       break;
    case INT: // input int
        break;
    ....
  }
}