#include #include #include #include #include

// Function to split a string by delimiter std::vectorstd::string split(const std::string& str, char delimiter) { std::vectorstd::string tokens; std::string token; std::istringstream tokenStream(str); while (std::getline(tokenStream, token, delimiter)) { tokens.push_back(token); } return tokens; }

int main(int argc, char* argv[]) { if (argc < 4) { std::cout << "Usage: " << argv[0] << " <output_file> <input_file1> <input_file2> ..." << std::endl; return 1; }

std::string outputFile = argv[1];
std::map<std::string, std::vector<std::string>> data; // Map to store column names and their corresponding values

// Read input files
for (int i = 2; i < argc; i++) {
    std::ifstream inputFile(argv[i]);
    std::string line;
    std::getline(inputFile, line); // Read header line

    // Split header line into column names
    std::vector<std::string> columns = split(line, ',');

    // Read data lines
    while (std::getline(inputFile, line)) {
        std::vector<std::string> values = split(line, ',');

        // Store values in the map based on column names
        for (int j = 0; j < columns.size(); j++) {
            data[columns[j]].push_back(values[j]);
        }
    }

    inputFile.close();
}

// Write merged data to output file
std::ofstream outputFileStream(outputFile);
for (const auto& column : data) {
    outputFileStream << column.first << ",";
}
outputFileStream << std::endl;

// Write values for each column
int numRows = data.begin()->second.size();
for (int i = 0; i < numRows; i++) {
    for (const auto& column : data) {
        outputFileStream << column.second[i] << ",";
    }
    outputFileStream << std::endl;
}

outputFileStream.close();

std::cout << "Data merged successfully. Output file: " << outputFile << std::endl;

return 0;

}

使用该程序的命令行示例:

./merge_datasets output.csv input1.csv input2.csv input3.csv

其中,output.csv是合并后的输出文件名,input1.csvinput2.csvinput3.csv是要合并的输入文件名。合并后的数据将保存在output.csv中。

请注意,该程序假设输入文件的第一行是列名,数据以逗号分隔。如果数据文件的格式不同,可能需要对代码进行适当的修改。

C++ 命令行工具:合并具有相同列名的多个数据集

原文地址: https://www.cveoy.top/t/topic/pZed 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录