递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 有关文本类操作

[复制链接]

211

主题

446

帖子

2999

积分

金牌会员

Rank: 6Rank: 6

积分
2999
QQ
跳转到指定楼层
楼主
发表于 2023-12-5 12:59:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有一段很长的文本,需要每5字符插入一个回车符,我是用一个大循环一个一个插入,但这种方法太耗时间了,有没有一种方法一次插入的,速度要快
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
沙发
发表于 2023-12-5 14:17:03 | 只看该作者
可以试下这个,优化的重点是将分配内存的次数降到最低。


<火山程序 类型 = "通常" 版本 = 1 />

方法 间隔插入指定文本 <公开 静态>
参数 原始文本 <类型 = 文本型 注释 = "所欲插入内容的文本">
参数 结果文本 <类型 = 文本型 注释 = "插入结果返回到此参数">
参数 插入内容 <类型 = 文本型 注释 = "所欲插入的内容" @默认值 = "\r\n">
参数 插入间隔 <类型 = 整数 注释 = "每隔多少个字符插入指定的内容" @默认值 = 5>
{
    清空文本 (结果文本)
    变量 文本长度 <类型 = 整数>
    变量 文本指针 <类型 = 变整数>
    文本长度 = 取文本长度 (原始文本)
    文本指针 = 取文本指针 (原始文本)
    如果 (文本长度 < 插入间隔)
    {
        置文本指针 (结果文本, 文本指针)
        返回
    }
    变量 循环次数 <类型 = 整数>
    循环次数 = 文本长度 / 插入间隔
    置文本预分配字符数 (结果文本, 文本长度 + (循环次数 + 1) * 取文本长度 (插入内容))
    计次循环 (循环次数)
    {
        添加部分文本指针内容 (结果文本, 文本指针, 插入间隔)
        加入文本 (结果文本, 插入内容)
        文本指针 = 文本指针 + 插入间隔 * 2
    }
    如果 (文本长度 % 插入间隔 > 0)
    {
        添加文本指针内容 (结果文本, 文本指针)
    }
}
回复

使用道具 举报

211

主题

446

帖子

2999

积分

金牌会员

Rank: 6Rank: 6

积分
2999
QQ
板凳
 楼主| 发表于 2023-12-5 17:44:46 | 只看该作者
Xelloss0618 发表于 2023-12-5 14:17
可以试下这个,优化的重点是将分配内存的次数降到最低。



速度提高好多倍,小修改了下
回复

使用道具 举报

36

主题

444

帖子

1550

积分

金牌会员

Rank: 6Rank: 6

积分
1550
QQ
地板
发表于 2023-12-5 17:51:24 | 只看该作者
此时此刻才体现了火山C++的威力
Q 75520266
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
5#
发表于 2023-12-5 17:53:45 | 只看该作者
Q624353765 发表于 2023-12-5 17:44
速度提高好多倍,小修改了下

返回文本型会多复制一次内存,不过看你喜欢了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 05:38 , Processed in 0.098194 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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