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