逐行读取文件并存储为整数变量C ++

时间:2013-04-27 13:01:34

标签: c++

我是c ++的初学者。我试图读取一个文件,并希望将其保存为整数变量。在我的文件中,我有。

4
3
1

现在我希望变量具有以下值

fu_unit_adder=4                                                                         
fu_unit_mult=3
fu_unit_div=1

我该怎么办?

到目前为止我的代码:

#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <stdio.h>

using namespace std;


int main()
{
    int  fu_unit_adder;
    int  fu_unit_mult;
    int  fu_unit_div;

    ifstream config_file ("config.txt");
    if (config_file.is_open())
    {
        for (int j = 0; j < 3; j++)
        {
            getline(config_file,fu_unit[j]);
            cout << fu_unit[j] << endl;
        }
    }
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:4)

如果您知道您的文件将采用该格式,那么您也可以使用>>从文件中提取。你可以这样做:

ifstream config_file ("config.txt");
config_file >> fu_unit_adder >> fu_unit_mult >> fu_unit_div;

如果你想要一个单元数组fu_unit,你可能会在某个时候延伸,那么你可以这样做:

ifstream config_file ("config.txt");
int fu_unit[3];
for (int i = 0; i < 3; i++) {
  config_file >> fu_unit[i];
}

如果你想要它更健壮一点,你可以检查提取是否成功如下:

ifstream config_file ("config.txt");
int fu_unit[3];
for (int i = 0; i < 3; i++) {
  if (!(config_file >> fu_unit[i])) {
    // Extraction i failed, make sure you do config_file.clear() to continue
  }
}

答案 1 :(得分:1)

如果您知道文件中数据的顺序是固定的并且计数总是3,您可以尝试:

getline(config_file,fu_unit_adder);
getline(config_file,fu_unit_mult);
getline(config_file,fu_unit_div);

仅为3个变量添加循环没有用处。 3个陈述就好了(如果是这样的话)。

答案 2 :(得分:1)

config_file.seekg(0,config_file.beg);
config_file >> fu_unit_adder;
config_file >> fu_unit_mult;
config_file >> fu_unit_div;

这应该适用于阅读前三个变量。