鱼C论坛

 找回密码
 立即注册
查看: 292|回复: 3

[已解决]通过C++实现记录总结输出的功能

[复制链接]
发表于 2024-1-30 08:12:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序可以将输入的数据记录下来,数据为字符串+数值,输入后程序会将数据存入文件,相同字符串的数据累加,且程序下次执行会自动读取文件中的数据,来判断下次输入是否会实现,用C++实现
最佳答案
2024-1-30 08:13:42
下面是一个简单的示例代码,演示如何使用C++实现记录总结输出功能:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <map>

  5. // 定义存储数据的类型
  6. struct Data {
  7.     std::string str;
  8.     int value;
  9. };

  10. // 从文件中读取数据,更新到映射表中
  11. void loadData(std::map<std::string, int>& dataMap) {
  12.     std::ifstream inputFile("data.txt");
  13.     if (inputFile.is_open()) {
  14.         std::string line;
  15.         while (std::getline(inputFile, line)) {
  16.             std::string str;
  17.             int value;
  18.             // 假设每行的格式是 "字符串 数值",用空格分隔
  19.             std::istringstream iss(line);
  20.             if (iss >> str >> value) {
  21.                 dataMap[str] += value;
  22.             }
  23.         }
  24.         inputFile.close();
  25.     }
  26. }

  27. // 将数据保存到文件中
  28. void saveData(const std::map<std::string, int>& dataMap) {
  29.     std::ofstream outputFile("data.txt");
  30.     if (outputFile.is_open()) {
  31.         for (const auto& pair : dataMap) {
  32.             outputFile << pair.first << " " << pair.second << std::endl;
  33.         }
  34.         outputFile.close();
  35.     } else {
  36.         std::cout << "无法保存数据到文件" << std::endl;
  37.     }
  38. }

  39. int main() {
  40.     std::map<std::string, int> dataMap;
  41.    
  42.     // 从文件中加载数据
  43.     loadData(dataMap);
  44.    
  45.     std::string inputStr;
  46.     int inputValue;
  47.    
  48.     std::cout << "请输入字符串和数值(以空格分隔):" << std::endl;
  49.     while (std::cin >> inputStr >> inputValue) {
  50.         // 更新映射表
  51.         dataMap[inputStr] += inputValue;
  52.         
  53.         std::cout << "当前数据累加结果:" << std::endl;
  54.         for (const auto& pair : dataMap) {
  55.             std::cout << pair.first << ": " << pair.second << std::endl;
  56.         }
  57.         
  58.         // 继续输入或者退出程序
  59.         std::cout << "请输入字符串和数值(以空格分隔),输入-1结束:" << std::endl;
  60.         if (inputStr == "-1") {
  61.             break;
  62.         }
  63.     }
  64.    
  65.     // 保存数据到文件
  66.     saveData(dataMap);
  67.    
  68.     return 0;
  69. }
复制代码


以上代码使用了`std::map`来存储字符串和累加后的数值,使用文件来保存数据。首先从文件中加载之前的数据,然后通过循环询问用户输入新的字符串和数值,每次都更新映射表并显示最新的累加结果。当用户输入`-1`时,退出循环并将映射表中的数据保存到文件中。

请注意,该代码只是一个基本示例,实际生产环境中可能需要更多的错误处理、验证输入的代码完整性等。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-30 08:13:42 | 显示全部楼层    本楼为最佳答案   
下面是一个简单的示例代码,演示如何使用C++实现记录总结输出功能:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <map>

  5. // 定义存储数据的类型
  6. struct Data {
  7.     std::string str;
  8.     int value;
  9. };

  10. // 从文件中读取数据,更新到映射表中
  11. void loadData(std::map<std::string, int>& dataMap) {
  12.     std::ifstream inputFile("data.txt");
  13.     if (inputFile.is_open()) {
  14.         std::string line;
  15.         while (std::getline(inputFile, line)) {
  16.             std::string str;
  17.             int value;
  18.             // 假设每行的格式是 "字符串 数值",用空格分隔
  19.             std::istringstream iss(line);
  20.             if (iss >> str >> value) {
  21.                 dataMap[str] += value;
  22.             }
  23.         }
  24.         inputFile.close();
  25.     }
  26. }

  27. // 将数据保存到文件中
  28. void saveData(const std::map<std::string, int>& dataMap) {
  29.     std::ofstream outputFile("data.txt");
  30.     if (outputFile.is_open()) {
  31.         for (const auto& pair : dataMap) {
  32.             outputFile << pair.first << " " << pair.second << std::endl;
  33.         }
  34.         outputFile.close();
  35.     } else {
  36.         std::cout << "无法保存数据到文件" << std::endl;
  37.     }
  38. }

  39. int main() {
  40.     std::map<std::string, int> dataMap;
  41.    
  42.     // 从文件中加载数据
  43.     loadData(dataMap);
  44.    
  45.     std::string inputStr;
  46.     int inputValue;
  47.    
  48.     std::cout << "请输入字符串和数值(以空格分隔):" << std::endl;
  49.     while (std::cin >> inputStr >> inputValue) {
  50.         // 更新映射表
  51.         dataMap[inputStr] += inputValue;
  52.         
  53.         std::cout << "当前数据累加结果:" << std::endl;
  54.         for (const auto& pair : dataMap) {
  55.             std::cout << pair.first << ": " << pair.second << std::endl;
  56.         }
  57.         
  58.         // 继续输入或者退出程序
  59.         std::cout << "请输入字符串和数值(以空格分隔),输入-1结束:" << std::endl;
  60.         if (inputStr == "-1") {
  61.             break;
  62.         }
  63.     }
  64.    
  65.     // 保存数据到文件
  66.     saveData(dataMap);
  67.    
  68.     return 0;
  69. }
复制代码


以上代码使用了`std::map`来存储字符串和累加后的数值,使用文件来保存数据。首先从文件中加载之前的数据,然后通过循环询问用户输入新的字符串和数值,每次都更新映射表并显示最新的累加结果。当用户输入`-1`时,退出循环并将映射表中的数据保存到文件中。

请注意,该代码只是一个基本示例,实际生产环境中可能需要更多的错误处理、验证输入的代码完整性等。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-30 09:55:38 | 显示全部楼层
FishC 发表于 2024-1-30 08:13
下面是一个简单的示例代码,演示如何使用C++实现记录总结输出功能:

在windows下如何使用脚本运行linux生成的执行文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-30 09:56:24 | 显示全部楼层
渔村暮火 发表于 2024-01-30 09:55
在windows下如何使用脚本运行linux生成的执行文件


在Windows下运行Linux生成的可执行文件,可以使用Cygwin、MinGW或者Windows Subsystem for Linux (WSL) 等工具来模拟Linux环境。

方法一:使用Cygwin
1. 安装Cygwin,下载地址:https://www.cygwin.com/
2. 在安装过程中选择需要的组件,包括"binutils"、"gcc-core"、"make"等。
3. 打开Cygwin终端,切换到可执行文件所在的目录。
4. 运行可执行文件:`./可执行文件名`

方法二:使用MinGW
1. 安装MinGW,下载地址:https://mingw-w64.org/doku.php
2. 在安装过程中选择需要的组件,包括"mingw64-gcc-bin"等。
3. 打开命令提示符,切换到可执行文件所在的目录。
4. 运行可执行文件:`可执行文件名.exe`

方法三:使用Windows Subsystem for Linux (WSL)
1. 安装WSL,在Windows 10中的"控制面板"->"程序"->"启用或关闭Windows功能"中勾选"适用于Linux的Windows子系统"。
2. 在应用商店中搜索并安装指定的Linux发行版(如Ubuntu)。
3. 打开WSL终端,切换到可执行文件所在的目录。
4. 运行可执行文件:`./可执行文件名`

请注意,上述方法中的可执行文件必须是在Linux环境中生成的,而非Windows环境。如果可执行文件依赖于Linux特定的库或功能,则在Windows上无法保证正常运行。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 01:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表