0

我正在为一项任务创建一个银行终端。它能够添加客户,每个客户包含 5 个不同的变量,分别是姓名、地址、社交#、雇主和收入。一旦这些变量被填充并退出终端,这些变量就会被写入文件。

我遇到的问题是,在启动终端时,我需要从文件中读取这些值,每个值都在各自的行中,并将它们存储在各自的变量中以在 addClient() 函数中使用。这是使事情比提交我的整个项目更容易的代码片段:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
  using namespace std;

  std::ifstream infile2("client-info.txt");

  //Strings used for respective items from file
  string clientName, clientAddress, clientSocial, clientEmployer, clientIncome;

  //Here is where I am having the problem of reading the info from the file
  //line by line and storing it in respective variables.
  while (infile2)
  {
     getline(infile2,clientName);
     getline(infile2,clientAddress);
     getline(infile2,clientSocial);
     getline(infile2,clientEmployer);
     getline(infile2,clientIncome);

     client.addClient(clientName, clientAddress, clientSocial, clientEmployer, clientIncome);
  }
  infile2.close();
}

例如,文件就是这样存储的。

John Doe
123 Easy Lane
123-45-6789
USSRC
36000

我遇到的问题是我无法找到一种可靠的方法来获取每一行并将它们存储在各自的字符串中。对于作业,我不必处理空格等。所以第 0-4 行将用于一个客户,5-9 用于另一个客户,依此类推。

非常感谢朝着正确的方向推动,谢谢!

4

2 回答 2

3

如果该addClient函数像您一样接受 5 个参数,那么您当前的 main 函数已经解决了您的问题。

如果您想将这 5 个字符串放入一个字符串中,请在addClient函数中使用这个单个字符串。

您可以创建一个类:

class ClientInfo
{
 private:
   string clientName;
   string clientAddress; 
   string clientSocial;
   string clientEmployer,;
   string clientIncome;
public:
  ClientInfo(string name, string addr, string ssn, 
                 string employer, string income):
                  clientName(name), clientAddress(addr), clientSocial(ssn),
                  clientEmployer(employer), clientIncome(income)
  {
  }
};

然后在你的内部main,你可以执行以下操作:

ClientInfo currentClient(clientName, clientAddress, 
                clientSocial, clientEmployer, clientIncome);
client.addClient(currentClient);
于 2013-04-23T01:44:48.850 回答
0

我认为您遇到的唯一问题是当您调用 getline 时,您没有传入参数。在这种情况下,我认为您需要使用换行符。

  while (infile2)

      {
         getline(infile2,clientName, '\n');
         getline(infile2,clientAddress, '\n');
         getline(infile2,clientSocial, '\n');
         getline(infile2,clientEmployer, '\n');
         getline(infile2,clientIncome, '\n');

         client.addClient(clientName, clientAddress, clientSocial, clientEmployer, clientIncome);
      }

我不确定 '\n' 语法,但这会读取文件,直到它遇到换行符,然后继续下一行。

于 2013-04-23T01:42:09.737 回答