我是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;
}
答案 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;
这应该适用于阅读前三个变量。