You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何读取TXT文件并将数据存入并行数组?

账户文件读取与数组存储实现方案

看起来你在处理账户信息文件读取的时候卡壳了,我来帮你把逻辑理清楚,给出完整可运行的实现代码。

首先先明确你的需求:

读取一个TXT文件,首行数字是账户总数,后续每行依次是账户名/PIN码/余额,需要把这些数据存入数组中。

先说说你现有代码里的几个小问题:

  • 变量类型选错了:余额是小数,不能用int,得用double;账户名是带连字符的字符串,char根本存不下,要用string
  • 文件打开的写法有问题,&quot...是转义错误,直接写正确的文件路径字符串就行
  • 没有定义合适的结构来存储账户信息,单独用多个数组不如用结构体清晰

下面是完整的实现步骤和代码:

1. 先定义账户结构体

用结构体把每个账户的三个字段打包在一起,代码可读性和维护性都会更好:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// 封装账户的所有信息
struct Account {
    string name;   // 账户名,比如MB-1111-1111
    int pin;       // PIN码,整数类型
    double balance;// 余额,支持小数
};

2. 实现读取文件的函数

这个函数负责打开文件、读取账户总数、分配数组空间、逐个读取账户数据,还加了错误处理:

// 用指针引用的方式,方便在函数内给数组分配内存
int readAccts(Account*& accounts) {
    // 替换成你的实际文件路径,和exe同目录直接写文件名就行
    ifstream accountFile("accounts.txt");
    
    // 先检查文件能不能打开
    if (!accountFile.is_open()) {
        cerr << "哎呀,打不开文件!请检查文件路径是否正确。" << endl;
        return 0;
    }

    int totalAccounts;
    accountFile >> totalAccounts; // 读取首行的账户总数

    // 动态分配数组,因为总数是从文件读来的,没法提前定死大小
    accounts = new Account[totalAccounts];

    // 循环读取每一行的账户信息
    for (int i = 0; i < totalAccounts; ++i) {
        accountFile >> accounts[i].name >> accounts[i].pin >> accounts[i].balance;
    }

    accountFile.close();
    return totalAccounts;
}

3. 写个主函数测试效果

可以用主函数来验证读取是否正确,记得用完动态数组要释放内存:

int main() {
    Account* accounts = nullptr;
    int accountCount = readAccts(accounts);

    if (accountCount > 0) {
        cout << "成功读取到 " << accountCount << " 个账户:" << endl;
        // 遍历输出所有账户信息
        for (int i = 0; i < accountCount; ++i) {
            cout << "[" << i+1 << "] 账户名:" << accounts[i].name 
                 << " | PIN码:" << accounts[i].pin 
                 << " | 余额:" << accounts[i].balance << endl;
        }
        // 释放动态分配的内存,避免内存泄漏
        delete[] accounts;
    }

    return 0;
}

几个关键注意点

  • 文件路径:如果你的TXT文件和编译后的exe不在同一个文件夹,一定要写完整路径,比如"D:/myProject/accounts.txt"
  • 内存释放:用new分配的数组,一定要用delete[]释放,不然会造成内存泄漏
  • 类型匹配:账户名是字符串用string,PIN是整数用int,余额是小数用double,别再搞混啦

内容的提问来源于stack exchange,提问作者Evanjbraun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:52:38