如何在不知道大小的情况下读取文本文件并存储到数组中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不知道大小的情况下读取文本文件并存储到数组中?相关的知识,希望对你有一定的参考价值。

我是新来的。

如何在不知道文本文件中数据数量的情况下读取文本文件并将其存储到数组中?

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

int main()
    ifstream data;
    int a[100];
    int i=0;

    data.open("test.txt");
    while(data>>a[i])
        cout << a[i] << endl;
        i++;
    
    data.close();

在我的代码中,数组大小是固定的。有没有使用<vector>库的解决方案吗?我可以增加数组的大小,但是这似乎不是一个好的解决方案。

答案

最简单的方法是只使用std::vector


如果您不愿意这样做,那么从概念上讲,您必须这样做

  1. 计数数据数:X
  2. 分配足够的内存来存储X数据项。

类似于以下内容的工作(注意:我没有测试代码)

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

size_t data_size(const string name)

    size_t c = 0;
    ifstream data;
    data.open(name);

     while(data>>a[i])
        c++;

    data.close();
    return c;


int main()
    string name = "test.txt"

    int* a = new int [data_size(name)] ;
    int i=0;

    ifstream data;
    data.open("test.txt");
    while(data>>a[i])
        cout << a[i] << endl;
        i++;
    
    data.close();

另一答案

使用std::basic_string及其append方法

以上是关于如何在不知道大小的情况下读取文本文件并存储到数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不知道数组大小的情况下初始化数组?

如何在不重新打开文件的情况下读取然后写入/追加到文本文件?

如何在不重复单词并遍历整个数组的情况下从数组中随机播放文本? (迅速)

如何在不知道c中大小的情况下遍历数组[重复]

哈希表调整大小:我们如何在不知道密钥的情况下做到这一点?

如何在不大幅增加其大小的情况下在 PowerShell 中保存文本文件?