-5

我正在使用以下代码将数组数据保存到文件中

ofstream out;
out.open("Database.txt", ios::trunc);

for(int t=0; t<Data_Counter; t++)
{
     out << t <<endl;
     out << Data[t].getName() << endl;
     out << Data[t].getID() << endl;
}
out.close();

现在我想在相同的数组位置检索数据。我需要在以下代码中添加什么才能使其工作:

ifstream in;
in.open("\Database.txt", ios::in);

// what logic to use
in.close();
4

2 回答 2

3

要阅读到文件的末尾,请使用类似这样的代码

int index;
string name, id;
while (in >> index >> name >> id)
{
    // do something with index, name and id
}

这是有效的,因为in >> ...只有在读取成功时才有效。因此,当您到达文件末尾时in >> ...将为 false 并且 while 循环将终止。

我假设您的姓名和身份证件中没有空格。如果不是这种情况,那么您将遇到一个稍微困难的问题。

另一种方法是利用您的输入由换行符分隔的事实并执行此操作

string index, name, id;
while (getline(in, index) && getline(in, name) && getline(in, id))
{
    // do something with index, name and id
}

此版本的优点是,如果您的名字中有空格,它将起作用。缺点是getline仅适用于字符串。所以你必须index从字符串转换为整数。

于 2013-09-23T06:39:48.377 回答
1

只是为了让你走上正轨,

int xyz;
in>>xyz;

这将在您的第一行读取整数,您将其存储为“t”。现在尝试逐行循环和读取字符串并存储它们。祝你好运。

于 2013-09-23T06:24:05.297 回答