news 2026/5/12 19:12:23

2*8的lcd显示屏自动居中

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2*8的lcd显示屏自动居中

一、核心代码(直接可用)

1️⃣ 计算 GBK 显示宽度

int gbkWidth(const std::string &s) { int w = 0; for (size_t i = 0; i < s.size(); ) { unsigned char c = s[i]; if (c & 0x80) { // GBK 中文 w += 2; i += 2; } else { w += 1; i += 1; } } return w; }

2️⃣ 按 8 位拆成两行(GBK 安全)

void splitToTwoLines(const std::string &src, std::string &line1, std::string &line2) { int w = 0; size_t i = 0; // 第一行 for (; i < src.size(); ) { unsigned char c = src[i]; int cw = (c & 0x80) ? 2 : 1; if (w + cw > 8) break; line1.append(src, i, cw == 2 ? 2 : 1); w += cw; i += (cw == 2 ? 2 : 1); } // 第二行(最多 8 位) w = 0; for (; i < src.size(); ) { unsigned char c = src[i]; int cw = (c & 0x80) ? 2 : 1; if (w + cw > 8) break; line2.append(src, i, cw == 2 ? 2 : 1); w += cw; i += (cw == 2 ? 2 : 1); } }

3️⃣ 自动居中主函数(你要的返回 string)

std::string autoCenterGBK_2x8(const std::string &text) { std::string line1, line2; splitToTwoLines(text, line1, line2); int w1 = gbkWidth(line1); int w2 = gbkWidth(line2); // 第一行不满 → 第一行居中 if (w1 < 8) { int left = (8 - w1) / 2; line1 = std::string(left, ' ') + line1; } // 第一行满,第二行不满 → 第二行居中 else if (w2 < 8 && !line2.empty()) { int left = (8 - w2) / 2; line2 = std::string(left, ' ') + line2; } return line1 + "\n" + line2; }

二、效果示例

✅ 示例 1:第一行 3 个中文(6 位)

auto s = autoCenterGBK_2x8("中国人");

显示:

中国人

✅ 示例 2:第一行满 4 个中文,第二行 2 个中文

auto s = autoCenterGBK_2x8("中华人民共和国你好");

显示:

中华人民 共和国你

✅ 示例 3:正好一行 4 个中文

auto s = autoCenterGBK_2x8("测试程序");

显示:

测试程序
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 20:23:50

noi-2025年12月16号作业

题目&#xff1a;B4407 [语言月赛 202509] 逃避讲题的最好方法是&#xff1a; 网址&#xff1a;https://www.luogu.com.cn/problem/B4407 思路&#xff1a;我们分别使用mx、mn数组记录每一道题的最大值分数和最小分数&#xff0c;同时使用一个e数组来保存每一道题的分数。首先…

作者头像 李华
网站建设 2026/5/5 19:19:10

架构设计:ElasticSearch+HBase 海量存储架构设计与实现

一&#xff1a;百亿级 海量存储数据服务的业务背景 很多公司的业务数据规模庞大&#xff0c;在百亿级以上&#xff0c; 而且通过多年的业务积累和业务迭代&#xff0c;各个业务线错综复杂&#xff0c;接口调用杂乱无章&#xff0c;如同密密麻麻的蛛网&#xff0c;形成了难以理清…

作者头像 李华
网站建设 2026/5/1 13:11:51

centos7 磁盘I/O性能

磁盘I/O性能&#xff08;核心指标&#xff09;​需安装 sysstat工具包&#xff08;含 iostat、sar等&#xff09;&#xff0c;若未安装先执行&#xff1a;yum install -y sysstat # CentOS/RHEL&#xff08;1&#xff09;iostat -x 1&#xff1a;实时监控磁盘I/O&#xff08;推…

作者头像 李华