鱼C论坛

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

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

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

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

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

x
程序可以将输入的数据记录下来,数据为字符串+数值,输入后程序会将数据存入文件,相同字符串的数据累加,且程序下次执行会自动读取文件中的数据,来判断下次输入是否会实现,用C++实现
最佳答案
2024-1-30 08:13:42
下面是一个简单的示例代码,演示如何使用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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-30 08:13:42 | 显示全部楼层    本楼为最佳答案   
下面是一个简单的示例代码,演示如何使用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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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-11-22 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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