Чтение строк из файла и сохранение в отдельных строковых переменных

Я создаю банковский терминал для назначения. Он имеет возможность добавлять клиентов с каждым клиентом, содержащим 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 для другого и т. Д.

Толчок в правильном направлении будет принята с благодарностью, спасибо!

0

Решение

Если addClient функция принимает 5 параметров, как вы сделали, тогда ваша текущая основная функция уже решила ваши вопросы.

Если вы хотите поместить эти 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);
3

Другие решения

Я думаю, что единственная проблема, с которой вы сталкиваетесь, это когда вы вызываете 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’, но он будет читать файл, пока он не достигнет новой строки, а затем перейдет к следующей строке.

0

По вопросам рекламы ammmcru@yandex.ru