有一个csv数据表,第一列为编号,第二列为数据,编写C++代码实现按照相同的编号,对第数据进行整理,相同编号的数据放在同一行,并将整理结果保存到新的csv文件
时间: 2024-11-18 17:15:55 浏览: 24
要实现这个功能,我们可以使用C++标准库中的fstream和map来处理CSV文件。下面是一个示例代码,展示了如何读取CSV文件,将相同编号的数据整理到同一行,并将结果保存到新的CSV文件中:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>
#include <vector>
int main() {
std::ifstream inFile("input.csv"); // 打开输入文件
std::ofstream outFile("output.csv"); // 创建输出文件
std::string line;
std::map<std::string, std::vector<std::string>> dataMap;
if (!inFile.is_open()) {
std::cerr << "无法打开输入文件!" << std::endl;
return 1;
}
// 读取数据并存储到map中
while (getline(inFile, line)) {
std::istringstream ss(line);
std::string id, value;
getline(ss, id, ','); // 读取编号
getline(ss, value, ','); // 读取数据
dataMap[id].push_back(value); // 将数据添加到对应编号的vector中
}
inFile.close(); // 关闭输入文件
// 将整理后的数据写入到输出文件
for (const auto& pair : dataMap) {
outFile << pair.first; // 写入编号
for (const auto& val : pair.second) {
outFile << "," << val; // 写入数据
}
outFile << "\n"; // 换行
}
outFile.close(); // 关闭输出文件
std::cout << "数据处理完成,结果已保存到output.csv文件中。" << std::endl;
return 0;
}
```
这段代码首先定义了两个文件流对象,分别用于读取和写入文件。它使用一个map来存储每个编号对应的所有数据值。通过遍历输入文件的每一行,将编号和数据分离,并将数据存储在map中。最后,它将整理后的数据写入到输出文件中。
请确保你的输入文件名是`input.csv`,并且该文件位于程序可执行文件相同的目录下。运行程序后,你将在相同目录下得到一个名为`output.csv`的新文件,其中包含了整理后的数据。
阅读全文