如何读取多个输入文件并写入 txt 中的新文件和 C++ 中的 excel?

How to read multiple input files and write into a new file in txt and excel in C++?

我曾经运行通过读取1个txt文件(1_Hello.txt")进行计算,通过函数计算输出,然后将输出写入新的txt文件。

但现在我有 5000 个 txt 文件(“1_Hello.txt”到“5000_Hello.txt”)。我想读取所有 5000 个 txt 文件,通过函数(变量“a”和向量“v”)计算每个 txt 文件,并将这 5000 个文件的输出写入一个新的 txt 文件和一个新的 excel 文件包含所有 5000 个输入文件的计算结果。

输入格式:id x y z

例如:1 9 7 5

想要的输出格式:id x y z add() int_vector()

例如:1 9 7 5 5.5 123

如何读取 5000 个 txt 文件并将函数的计算结果写入新的 txt 和 excel 文件?

如有任何帮助,我们将不胜感激。

      double add(){
      // do something
      }

      void output_vector(std::vector<int> &v) {
      // do something
      }

        int main() {
        std::vector<int> v;
        double a;

        ifstream in("1_Hello.txt");
        in.close();

        a=add();
        output_vector(v);

        return 0;
     }

这里有一些非常简单但不完整的代码,可能会有所帮助:

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

int main(int argc, char* argv[]) {
    /* define some vectors to store the data in */
    std::vector<int> id_vec;
    std::vector<int> x_vec;
    std::vector<int> y_vec;
    std::vector<int> z_vec;
    std::vector<double> calc_1_vec;
    std::vector<double> calc_2_vec;
    
    for (int i = 1; i < 5001; ++i) {
        std::string file_name = std::to_string(i) + std::string("_hello.txt");
        std::ifstream input_file (file_name);
        if (input_file.is_open()) {
            /* read whatever is in the file, maybe in a loop if there is more stuff in it */
            /* then close it */
            input_file.close();
            /* parse the input line and store the values in some variables */
            /* calculate whatever it is that you need to calculate */
            /* then store the calculated values in the vectors */
            /* also store the read values in the vectors */
        }
        else {
            std::cout << "could not open file" << std::endl;
        }
    }
    /* sort the vectors according to your needs */
    /* make sure that zou change the other vectors accordingly */
    /* so if you switch the 3. and the 4. index in the ID vector */
    /* then also switch those in the other vectors */
    
    /* open up the output file and write the vectors into the files */
}

当然还有更好的解决方案,比如使用 std::filesystem 读取目录中与特定模式匹配的所有文件。

另一项改进是只有一个向量并定义一个存储在该向量中的结构。该结构然后具有 ID、X、Y、Z 和计算字段。然后你可以使用标准库中的一些排序函数。您可以拥有处理计算、打印等的成员函数。

struct data {
    int id;
    int x;
    int y;
    int z;
    double calc_1;
    double calc_2;
};

然后简单地:

std::vector<data> data_vec;