如何读取包含大小未知的整数列表的文件

How to read file containing a list of integers with an unknown size

我想从一个包含 4 个整数的未知列表的文件中读取。所以文件的每一行都包含这样的内容12.0 43.0 19.0 77.0" 我想过使用二维数组,但我不知道文件的大小,因为它非常大文件。我最终将每一行作为一个字符串读取并使用 "while(!in_file.eof())" 这样我就可以到达文件的末尾,但问题是,我需要从每一行中单独获取数字。

您不需要知道文件中有多少行或每行有多少个数字。

使用std::vector>来存储数据。 如果在每一行中,整数用 space 分隔,则可以迭代一串整数并将它们一个一个地添加到向量中:

#include <iostream>
#include <string>    
#include <stream>
#include <vector>
using namespace std;

int main()
{
    string textLine = "";
    ifstream MyReadFile("filename.txt");
    vector<vector<int>> main_vec;

    // Use a while loop together with the getline() function to read the file line by line
    while (getline(MyReadFile, textLine)) {
    
        vector<int> temp_vec; // Holdes the numbers in a signle line
        int number = 0;

        for (int i = 0, SIZE = textLine.size(); i < SIZE; i++) {

            if (isdigit(textLine[i])) {
                number = number * 10 + (textLine[i] - '0');
            }
            else { // It's a space character. One number was found:
                temp_vec.push_back(number);
                number = 0; // reset for the next number
            }
        }

        temp_vec.push_back(number); // Also add the last number of this line.
        main_vec.push_back(temp_vec); 
    }

    MyReadFile.close();

    // Print Result:
    for (const auto& line_iterator : main_vec) {
        for (const auto& number_iterator : line_iterator) {
            cout << number_iterator << " ";
        }

        cout << endl;
    }
}

提示:此代码仅适用于整数。对于浮点数,您可以轻松识别每行中 space 的索引,获取 textLine 的子字符串,然后将此子字符串转换为浮点数 .