下面是一个简单的示例代码,演示如何使用C++实现记录总结输出功能:
#include <iostream>
#include <fstream>
#include <string>
#include <map>
// 定义存储数据的类型
struct Data {
std::string str;
int value;
};
// 从文件中读取数据,更新到映射表中
void loadData(std::map<std::string, int>& dataMap) {
std::ifstream inputFile("data.txt");
if (inputFile.is_open()) {
std::string line;
while (std::getline(inputFile, line)) {
std::string str;
int value;
// 假设每行的格式是 "字符串 数值",用空格分隔
std::istringstream iss(line);
if (iss >> str >> value) {
dataMap[str] += value;
}
}
inputFile.close();
}
}
// 将数据保存到文件中
void saveData(const std::map<std::string, int>& dataMap) {
std::ofstream outputFile("data.txt");
if (outputFile.is_open()) {
for (const auto& pair : dataMap) {
outputFile << pair.first << " " << pair.second << std::endl;
}
outputFile.close();
} else {
std::cout << "无法保存数据到文件" << std::endl;
}
}
int main() {
std::map<std::string, int> dataMap;
// 从文件中加载数据
loadData(dataMap);
std::string inputStr;
int inputValue;
std::cout << "请输入字符串和数值(以空格分隔):" << std::endl;
while (std::cin >> inputStr >> inputValue) {
// 更新映射表
dataMap[inputStr] += inputValue;
std::cout << "当前数据累加结果:" << std::endl;
for (const auto& pair : dataMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
// 继续输入或者退出程序
std::cout << "请输入字符串和数值(以空格分隔),输入-1结束:" << std::endl;
if (inputStr == "-1") {
break;
}
}
// 保存数据到文件
saveData(dataMap);
return 0;
}
以上代码使用了`std::map`来存储字符串和累加后的数值,使用文件来保存数据。首先从文件中加载之前的数据,然后通过循环询问用户输入新的字符串和数值,每次都更新映射表并显示最新的累加结果。当用户输入`-1`时,退出循环并将映射表中的数据保存到文件中。
请注意,该代码只是一个基本示例,实际生产环境中可能需要更多的错误处理、验证输入的代码完整性等。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |