从C ++文件中读取字符串,整数和双精度混合

时间:2011-10-09 18:22:52

标签: c++ file

我有一个.txt文件,如下所示:

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

我需要将所有这些值读入不同类型的变量中。至于整数和双打从文件中读取似乎是有效的,但随后它就变成了弦乐,乐趣就开始了 看起来字符串被读取然后我尝试输出它们整个控制台崩溃。

编辑: “崩溃”我的意思是“没有响应”类型的消息出现。我使用的代码基本上是:

ifstream file;
file.open ("C:\path\file.txt");
file >> int1;

getline(file, string1);
getline(file, string2);
file >> int2;
file >> double1;
file >> double2;
file >> double3;
// ....

file.close();

编辑2:不知何故,而不是1的int1值是-858993460。

我真的很困惑......

编辑3:现在正在设置所有值,但它们不是文件中写入的值。 第一个int和第一个srting很好,但第二个字符串是红色为0,双打都是红色

-92559631349317830000000000000000000000000000000000000000000000

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

2 个答案:

答案 0 :(得分:1)

file.open(“C:\ path \ file.txt”);

\是转义字符

修复

file.open(“C:\\ path \\ file.txt”);

答案 1 :(得分:0)

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

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;
    ....
  }
}