从文件中读取整数数据

时间:2015-04-03 07:11:22

标签: c++ file ifstream

我刚开始使用C ++并正在处理代码问题,所以如果有人这样做,他们就会认识到这个问题,因为它是列表中的第一个问题。我需要打开一个包含3列空格分隔整数值的文件。这是我的,在fizbuz.txt下。我需要从文件中获取整数值并存储它们以供以后在程序中的其他地方使用。

1 2 10
3 5 15
4 5 20
2 8 12
2 4 10
3 6 18
2 3 11
8 9 10
2 5 8
4 9 25

现在我可以正常打开文件了,我已经使用getline()使用我的下面的代码来正确读取文件。但是,我不希望它们是字符串格式,我希望它们是整数。所以我环顾四周,每个人基本上都说相同的符号(文件>> int1>> int2 ...)。我已经编写了一些代码,这些代码完全是我在几个例子中看到的,而且它根本不像他们告诉我应该的那样。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    string filename = "fizbuz.txt";
    string line;
    int d1,d2,len;
    int i =0;
    int res1[10], res2[10], length[10];
    ifstream read (filename.c_str());
    if (read.is_open())
    {
        // while(read>>d1>>d2>>len);
        // {
        //     res1[i] = d1;
        //     res2[i] = d2;
        //     length[i] = len;
        //     i++;
        // }
        while (!read.eof())
        {
            read>>d1>>d2>>len;
            res1[i] = d1;
            res2[i] = d2;
            length[i] = len;
        }
        read.close();
    }
    else
    {
        cout << "unable to open file\n";
    }
    for (int j = 0; j < 10;j++)
    {
        cout<< res1[j] << " " << res2[j] << " " << length[j] << '\n';
    }

}

两个while循环在底部的输出函数中执行相同的操作。 fizbuz.txt的最后一行将返回到res1,res2和length的第一个元素,并且所有3个的剩余元素都是伪随机值,可能来自之前使用该内存块的任何程序。输出低于

4 9 25
32767 32531 32767
-1407116911 4195256 -1405052128
32531 0 32531
0 0 1
0 1 0
-1405052128 807 -1404914400
32531 1 32531
-1405054976 1 -1404915256
32531 0 32531

2 个答案:

答案 0 :(得分:1)

除了您需要移除;行中的while之外,第一个版本才有效。

while (read >> d1 >> d2 >> len);
                               ^

答案 1 :(得分:0)

试试这个

        while (!read.eof())
        {
            read>>d1>>d2>>len;
            res1[i] = d1;
            res2[i] = d2;
            length[i] = len;
            i++;
        }