簡體   English   中英

從文本文件中將各種值讀入數組

[英]Reading various amount of values into array from text file

我正在嘗試從.txt文件中讀取一些數據到一些變量中,然后將這些數據傳遞到類對象中。 文本文件中的前幾個值可以正常工作(firstNames,sname,dob,accountNo),但是bankNumbers引起了麻煩。 一個帳戶持有人可以擁有0到5個帳戶,因此有些帳戶可能擁有3個,0個或5個。此刻,它會讀取接下來的5個值,因此,如果我的第一個用戶只有3個帳戶,則我的程序將讀入accountNo和surname作為數組的第4和第5個值。 我如何使程序僅讀取其中存在的數字? 這是一個示例文本文件:

548161 Bloggs Joe 01-01-1970 1567 1824 2041
378941 Smith John 25-12-1985 
123085 Claus Santa 30-05-1910 7829 2398 4890 1473 4392
318945 Obama Barack 14-02-1965 4382 3944

這是我的代碼:

int main()
{
    ifstream accountsFile;
    string surname, firstNames, dob;
    int accountNo, bankNumbers[5];

    accountsFile.open("Accounts.txt", ifstream::in);

    int i = 0;
    while (!accountsFile.eof())
    {

        accountsFile >> accountNo >> surname >> firstNames >> dob;

        for (int i = 0; i < 5; i++)
        {
            accountsFile >> bankNumbers[i];
        }

        accounts[i] = Account(accountNo, surname, firstNames,  dob, bankNumbers);
        i++;
    }

    accountsFile.close();

    system("pause");
    return 0;
}

將所有變量更改為字符串。 這樣,您就可以使用getline()方法抓取每一行(這將是一個完整的帳戶)

然后將輸入行拆分為字符串數組,並相應地填寫帳號,姓氏,名字和出生日期的變量。

然后使用第一個銀行編號(將是第一個銀行編號)的數組分別填寫銀行編號,直到到達行字符串數組的末尾為止。

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

using namespace std;

int main()
{
    ifstream accountsFile;
    string surname, firstName, dob;
    string accountNo, bankNumbers[5];

    accountsFile.open("Accounts.txt", ios::in);

    string input;
    int accountsIndex = 0;

    if (accountsFile)
    {
        getline(accountsFile, input);

        while (accountsFile)
        {
            string line[9];
            int lineIndex = 0;

            for (int x = 0; x < input.length(); x++) {
                line[lineIndex] += input[x];
                if (input[x] == ' ') {
                    lineIndex++;
                }
            }

            accountNo = line[0];
            surname = line[1];
            firstName = line[2];
            dob = line[3];

            for (int x = 4; x < (sizeof(line) / sizeof(*line)); x++)
            {
                bankNumbers[x - 4] = line[x];
            }

            accounts[accountsIndex] = Account(accountNo, surname, firstName, dob, bankNumbers);
            accountsIndex++;

            getline(accountsFile, input);
        }

        accountsFile.close();
    }

    system("pause");
    return 0;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM