第八天学习C++
C++调用Python这是一个简单的C++通过Python C API调用Python脚本的示例项目。 文件结构 example.py - 示例Python脚本,包含两个函数:add和hello main.cpp - C++程序,演示如何调用Python函数 CMakeLists.txt - CMake配置文件 编译和运行确保您的系统上已安装Python开发库和CMake。 构建项目123456789# 创建构建目录mkdir buildcd build# 配置cmake ..# 编译cmake --build . 运行程序1234# 在build目录中./cpp_python_example # Linux/macOS# 或.\Debug\cpp_python_example.exe # Windows 注意事项 编译时可能需要设置Python库的路径,取决于您的Python安装位置 程序运行时需要能够找到example.py文件,确保它在当前目录或正确的Python路径中 本示例使用了Python C API,需要小心管理引用计数以避免内存泄漏。
第七天学习C++
电影记录器项目概述电影记录器是一个简单的 C++ 命令行应用程序,用于记录你观看过的电影信息。程序记录的信息包括电影标题、导演、上映年份、评分、观看日期以及你的观后感。所有记录会保存在 “movies.txt” 文件中,程序启动时会自动加载该文件中的数据。 功能简介 添加新电影记录:输入电影标题、导演、上映年份、评分、观看日期和观后感。 显示所有记录:展示所有已录入的电影。 搜索电影:支持按照电影标题、导演、年份或评分搜索电影。 数据持久化:电影记录会保存到 “movies.txt” 文件中,程序启动时会自动读取。 需求 支持 C++11 标准的 C++ 编译器(如 g++)。 基本的命令行操作知识。 编译与运行 打开命令行终端并切换到项目目录。 使用以下命令编译项目: g++ -std=c++11 main.cpp Movie.cpp -o movie_recorder 运行程序: 在 Windows...
第六天学习C++
文件传输服务器这是一个基于 C++ 实现的文件传输服务器,支持接收文本和二进制文件。服务器采用多线程设计,可以同时处理多个客户端连接。 功能特点 支持多客户端并发连接 支持文本和二进制文件传输 自动保持文件原始格式(扩展名) 使用时间戳确保文件名唯一 跨平台支持(Windows/Linux) 实时显示传输进度 自动创建存储目录 项目结构1234567891011.├── server/ # 服务器端代码│ ├── include/ # 头文件目录│ │ └── Server.h # 服务器类定义│ ├── src/ # 源文件目录│ │ ├── Server.cpp # 服务器实现│ │ └── main.cpp # 程序入口│ └── CMakeLists.txt # CMake 构建配置├── received_files/ # 接收的文件存储目录├── received_texts/ #...
概念辨析:面向过程与面向对象
面向过程和面向对象的解释为了更好地理解面向过程(Procedural Programming)和面向对象(Object-Oriented Programming, OOP),我们需要从它们的概念、特点以及两者的区别逐步进行分析。 什么是面向过程?面向过程是一种以任务为中心的编程范式,强调程序执行的步骤和流程。它将问题分解为一系列具体的步骤或函数,通过这些函数一步步完成任务。 特点 以函数为核心: 程序由多个函数组成,每个函数负责完成特定任务。 顺序执行: 程序按照自上而下的顺序依次执行代码。 数据与操作分离: 数据通常是全局变量或局部变量,函数直接对数据进行操作。 模块化设计: 通过将功能划分为不同模块(即函数),实现一定程度的代码复用。 效率高但维护性差: 面向过程编程更贴近底层硬件,性能较高,但当程序规模变大时,代码难以维护和扩展。 举例假设我们要实现一个简单的五子棋游戏,面向过程会将整个游戏拆解为以下步骤: 开始游戏; 黑子先走; 绘制画面; 判断输赢; 白子轮次; 重复以上步骤直到结束。 每个步骤可以用一个独立的函数来实现,比如...
第五天学习C++
加密日记本系统一个支持加密的个人日记管理系统,使用C++开发。 功能特点核心功能 ✅ 日记的创建与保存 ✅ 日记内容加密存储 ✅ 密码保护 ✅ 加密日记的读取与显示 ✅ HTML导出功能(可通过浏览器打印为PDF) 技术特性 基于异或算法的简单加密实现 面向对象的模块化设计 文件I/O操作 异常处理机制 使用方法写日记 运行程序,选择 ‘y’ 写日记 输入日记文件名(如:mydiary.txt) 设置加密密码 依次输入: 日记标题 日期 内容 系统自动加密保存 读日记 运行程序,选择 ‘n’ 然后 ‘y’ 读日记 输入要读取的日记文件名 输入对应的密码 系统自动解密并显示内容 项目结构diary_app/├── include/│ ├── DiaryEntry.h # 日记条目基类│ ├── EncryptedDiaryEntry.h # 加密日记类│ └── HTMLExporter.h # HTML导出功能├── src/│ ├── DiaryEntry.cpp│ ├──...
第四天学习C++
个人日记支持的功能: 是否创建新日记 命名格式为:名称 + 日期 添加标题 添加内容 是否查找日记 查找关键词:日期 代码/* DiaryApp.cpp */ #include <iostream> #include <fstream> #include <string> #include <stdexcept> #include <vector> #include <algorithm> #include <ctime> // 定义DiaryEntry抽象基类,包含虚函数save()和display() class DiaryEntry { public: std::string title; std::string content; std::string date; // 格式为 "YYYY-MM-DD" DiaryEntry(const std::string& title, const...
第三天学习C++
详细解释这段文件监控程序的实现方式: 这是一个使用 Windows API 实现的文件系统监控程序,主要功能是监控指定目录中的文件变化。让我们分几个主要部分来解析: 基础设置和初始化 程序使用全局变量 running 控制程序的运行状态 实现了 signalHandler 函数来处理 Ctrl+C 信号,确保程序可以优雅退出 设置控制台输出为 UTF-16 编码,以支持宽字符显示 文件操作类型处理DisplayFileAction 函数负责显示不同类型的文件操作: 文件创建 (FILE_ACTION_ADDED) 文件删除 (FILE_ACTION_REMOVED) 文件修改 (FILE_ACTION_MODIFIED) 文件重命名(新名称和旧名称) 目录监控的核心实现主要使用了以下 Windows API: CreateFileW:创建目录监控句柄 ReadDirectoryChangesW:异步监控目录变化 WaitForSingleObject:等待文件系统事件 异步监控机制 使用 OVERLAPPED...
第二天学习C++
优化代码第一天的代码优化交互体验 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152// first programme with c++ #include <iostream>#include <string>#include <filesystem>namespace fs = std::filesystem;void inputCheck(std::string dirPath, std::string newPrefix, std::string needSuffix) { if (dirPath.empty() newPrefix.empty() needSuffix.empty()) { std::cerr << "Error: " << "directory_path new_prefix...
每天学习一点C++
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152// first programme with c++ #include <iostream>#include <string>#include <filesystem>#include <windows.h>namespace fs = std::filesystem;void inputCheck(int argc, char* argv[] , char* envp[]) { if (argc != 4) { std::cerr << "Usage: " << argv[0] << " <directory_path> <new_prefix> <need_suffix>"...
Git常用命令及最佳实践
Git 常用命令速查表配置 设置用户名: 1git config --global user.name "Your Name" 设置邮箱: 1git config --global user.email "your_email@example.com" 查看当前配置: 1git config --list 初始化 初始化新的 Git 仓库: 1git init 克隆远程仓库: 1git clone [url] 基本操作 查看当前状态: 1git status 添加文件到暂存区: 1git add [file1] [file2] ... 提交暂存区到仓库: 1git commit -m "提交信息" 查看提交日志: 1git log 分支管理 列出所有分支: 1git branch 创建新分支: 1git branch [branch-name] 切换到指定分支: 1git checkout [branch-name] 创建并切换到新分支: 1git checkout -b...