2013-04-23 2 views
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 для другого и т. Д.

Толчок в правильном направлении был бы признателен, спасибо!

ответ

3

Если функция 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); 
+0

Супер, это на самом деле делает вещи намного проще. Спасибо! – user1710357

+0

@ user1710357 добро пожаловать и спасибо за принятие ответа. – taocp

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); 
     } 

Я не уверен, что на «\ п» синтаксис, но это будет читать файл до тех пор, пока не попадает в символ новой строки, а затем перейти к следующей строке.

+0

по умолчанию, это \ п символов, см: HTTP: // www.cplusplus.com/reference/string/string/getline/ – taocp

Смежные вопросы