下面是一个简单的示例代码,演示如何使用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 小助理,如未能正确解答您的问题,请继续追问。