我有一个。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;
....
}
}