递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1393|回复: 2
打印 上一主题 下一主题

[视窗] c++代码嵌入,实现文件批量重命名

[复制链接]

23

主题

91

帖子

772

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
772
跳转到指定楼层
楼主
发表于 2024-12-24 10:08:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 aeszyl 于 2024-12-24 16:02 编辑

  c++代码嵌入是火山中文编程的灵魂,这几天一直研究这方面的知识,先用AI(我用的是:文心快码)根据要求输出c++代码,再转成嵌入式代码。下面代码中的正则表达式,稍做修改,可以实现各种文件批量重命名功能。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.程序

  3. 类 启动类 <公开 基础类 = 窗口程序类>
  4. {
  5.     方法 启动方法 <公开 类型 = 整数>
  6.     {
  7.         文件批量更名 ()
  8.         返回 (1)
  9.     }

  10.     方法 文件批量更名 <公开 静态 @视窗.外部头文件 = "<iostream>\r\n<filesystem>\r\n<string>\r\n<regex>"
  11.             @视窗.附加编译参数 = "cpp: /std:c++17">
  12.     {
  13.         // 文件目录=当前目录
  14.         @ std::filesystem::path currentDir = std::filesystem::current_path();
  15.         // 遍历当前目录中的所有文件
  16.         @ for (const auto& entry : std::filesystem::directory_iterator(currentDir)) {
  17.         @ if (std::filesystem::is_regular_file(entry.status())) {
  18.         @ std::string filename = entry.path().filename().string();
  19.         // 使用正则表达式匹配文件名(名称1-名称2.*)
  20.         @ std::regex pattern(R"(([^-]+)-([^-]+)(\..+))");
  21.         @ std::smatch match;
  22.         @ if (std::regex_match(filename, match, pattern)) {
  23.         @ std::string name1 = match[1].str();
  24.         @ std::string name2 = match[2].str();
  25.         @ std::string name3 = match[3].str();
  26.         // 构建新文件名(名称2-名称1.*)
  27.         @ std::string newName = name2 + "-" + name1 +  name3;
  28.         @ std::cout << "Renaming " << filename << " to " << newName << std::endl;
  29.         // 批量重命名文件
  30.         @ std::filesystem::rename(entry.path(), entry.path().parent_path() / newName);
  31.         @ }
  32.         @ }
  33.         @ }
  34.     }
  35. }
复制代码



回复

使用道具 举报

12

主题

128

帖子

2100

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2100
沙发
发表于 2024-12-24 12:05:27 | 只看该作者
C++20 需要稍微修改下
回复

使用道具 举报

28

主题

2144

帖子

7786

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7786
板凳
发表于 2024-12-24 12:16:56 | 只看该作者
你这个代码也只需要用到C++17。
并不是火山不兼容C++20,而是C++20的改动太大,以前的很多代码不符合C++20的规范,不允许编译。
现在火山核心库和第三方模块就有大量的代码不兼容C++20,所以会导致大量报错。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-4 20:45 , Processed in 0.085268 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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