当前位置: 首页 > news >正文

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("测试程序");

显示:

测试程序
http://www.zskr.cn/news/117373.html

相关文章:

  • 几种不同的技师展示、推荐形式,每个客户一上来就能找到喜欢的技师,立刻下单!
  • 基于大数据的餐饮食材管理系统的设计与实现开题报告
  • 基于SpringBoot的鸟博士微信小程序设计与实现(程序+文档+讲解)
  • 基于大模型LLM的开发与编程教程
  • Android-Audio-为啥不移到packages/module
  • 2025 OA 选型关键看这 4 点:集成、灵活、安全、易用,附高性价比系统清单
  • Flink startNewChain 核心解析
  • 41、深入探究Linux文件共享与编程开发
  • 图神经网络与pytorch
  • 读捍卫隐私09匿名指南
  • Flink 翻滚窗口、滑动窗口、会话窗口核心区别
  • FreeBuds Pro5续航短?关闭这些设置试试!
  • CPT、SFT、DPO分别是什么
  • Flink Join 核心解析:类型、原理、实操
  • 【计算机毕设】基于深度学习的人体摔倒识别方法与实现
  • Linux 内存管理:TLB ASID
  • 30-40 万新能源汽车 兼顾续航与智能的热门之选 - 速递信息
  • Skipping xxx as repository xxxx doesn‘t support architecture ‘i386‘
  • 网站建设公司怎么选?2025年网站设计制作公司推荐指南
  • 软硬协同:揭秘机器狗复杂地形适应背后的边缘智能中枢
  • 基于SpringBoot + Vue的高校科研项目申报审批管理系统
  • 基于SpringBoot + Vue的个性化学习系统
  • FlutterOpenHarmony底部导航栏组件开发
  • 深度分析:AI智能体记忆是如何管理的?
  • 2026年河北省职业院校技能大赛“信息技术应用创新”赛项(高职组)竞赛样题
  • 2025全球十大机床品牌排行榜:未来制造的中坚力量 - 速递信息
  • FlutterOpenHarmony动画效果实现指南
  • 零样本克隆音色有多强?实测EmotiVoice语音复刻能力
  • kanass全面介绍(15) - Kanass如何有效集成sward文档
  • 2025年沈阳优秀的无溶剂环氧涂料厂家需要多少钱,无溶剂环氧涂料/石墨烯涂料/环氧玻璃钢/环氧酚醛/光固化保护套无溶剂环氧涂料品牌选哪家 - 品牌推荐师