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

【C++篇】像解谜一样转换字符串:stoi 带你走向整数的世界

文章目录

前言

在现代 C++ 编程中,字符串与数字之间的转换是非常常见的需求。随着编程语言的发展,C++ 提供了多种方式来处理这种转换。stoi(string to integer)函数正是为了简化这一任务而被引入的。

在 C++ 的早期版本中,字符串转换为整数通常通过 C 风格的函数(如 atoi)来完成。然而,这些方法存在一些问题,比如:

  • 错误处理不足atoi 在遇到无效输入时不会抛出异常,导致程序行为不可预测。
  • 功能受限:C 风格的函数只能处理简单的转换,无法处理更复杂的需求,比如进制转换或精确的错误定位。

stoi 是 C++11 引入的一个标准库函数,常用于将字符串转换为整数。它的全称是 "string to integer"。

 1 背景与应用场景

1.1 stoi 的引入背景

C++11 标准引入了 stoi 等新的字符串转换函数,目的就是填补 C 风格函数的不足,提供更为安全、灵活和强大的字符串转换功能。stoi 属于标准库的一部分,可以通过 <string> 头文件引入。它不仅可以将字符串转换为整数,还可以通过额外的参数指定进制,并在解析过程中精确定位错误的位置。

与 C 风格的函数不同,stoi 具有以下优点:

  • 异常处理:遇到无效输入时,会抛出异常,方便程序进行错误处理。
  • 灵活性:支持指定进制(如二进制、十六进制等),提供了更广泛的应用场景。
  • 定位解析位置:通过 pos 参数,能够指出字符串转换失败的位置,增强了调试能力。

1.2 stoi 的优势

  1. 易于使用stoi 接口简洁明了,适合大部分转换需求。
  2. 异常机制:通过 std::invalid_argumentstd::out_of_range 异常,可以更优雅地处理错误情况。
  3. 支持进制转换:支持 2 至 36 的进制转换,方便处理不同的数字表示。
  4. 优化性能:相对于早期的字符串解析方法,stoi 在处理现代应用时更为高效和安全

1.3 应用场景

  • 用户输入处理:通常需要将用户输入的字符串转换为整数。
  • 文件解析:在读取文件时,可能会遇到包含数字的字符串,需要将其转换为数值。
  • 网络协议解析:一些网络协议传输的数据是以字符串的形式编码,解析时需要将其转换为数字。

 总的来说,stoi 函数的引入,是为了使 C++ 更加现代化和灵活,同时解决了早期字符串转换函数在错误处理和功能扩展方面的不足。它不仅提供了更安全的错误处理机制,还使得字符串到整数的转换变得更为高效和精确。

2. stoi函数详细剖析 

 函数原型

int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);

参数说明

str:待转换的字符串,必须是可解析为整数的形式,否则会抛出异常。

pos(可选)

一个指针,用于存储解析结束后字符串的下一个位置索引。
如果你不需要这个功能,可以将其设置为默认值 0nullptr

base(可选):要转的字符串的进制数
整数的进制,默认为 10(十进制)。可以指定其他基数,如 216 等。

返回值

  • 转换后的整数。

异常

  1. std::invalid_argument
    当字符串不能被转换为有效整数时抛出,如 "abc"

  2. std::out_of_range
    当字符串表示的值超出整数的范围时抛出,如 "99999999999999999999"(超出 int 的表示范围)。

2.1 基本用法

示例代码:

#include <iostream>
#include <string>using namespace std;
int main() 
{string str = "123";int num = stoi(str);std::cout << "整数值: " << num << std::endl;  // 输出: 整数值: 123return 0;
}

2.2 使用pos

示例代码:

#include <iostream>
#include <string>
using namespace std;int main() {string str = "123abc";size_t pos;int num = stoi(str, &pos);cout << "整数值: " << num << endl;  // 输出: 整数值: 123cout << "未解析部分索引: " << pos << endl;  // 输出: 未解析部分索引: 3return 0;
}

解析:

size_t pos;

声明一个变量 pos,类型为 size_t(无符号整数),用于存储 stoi 函数解析结束后的位置索引

     int num = stoi(str, &pos);

  • 调用 stoi 函数,将字符串 str 中可解析的整数部分转换为 int 类型,并赋值给变量 num
  • 解析细节:
    1. 从字符串 str 的左侧开始,解析数字部分 "123"
    2. 将解析出的数字部分转换为整数 123 并返回。
    3. &pos 保存解析结束的位置索引,即数字部分之后的字符索引(这里是索引 3,因为 str[3]a)。

关键点扩展

  1. stoi 的行为

    • 从左向右解析字符串中可转换为整数的部分。
    • 遇到第一个非数字字符时停止解析。
    • 返回解析出的整数,并通过 pos 指针告诉解析结束的位置。
  2. pos 的意义

    • pos 保存的是从字符串开头到解析结束的字符数。例如,"123abc" 中,解析到索引 3 停止。
  3. 未解析部分

    • 如果 pos 不等于字符串长度 str.size(),说明字符串中存在未被解析的部分。
    • 在本例中,未解析部分是 "abc",位于索引 3 及之后。
  4. 错误处理(异常)

    • 如果字符串中没有可解析的整数部分(如 "abc"),stoi 会抛出 std::invalid_argument 异常。
    • 如果字符串表示的数字超出 int 的范围,stoi 会抛出 std::out_of_range 异常。

2.3 不同进制转换

#include <iostream>
#include <string>
using namespace std;int main() {string str_hex = "1A";  // 十六进制int num = stoi(str_hex, nullptr, 16);cout << "十六进制转换为整数: " << num << endl;  // 输出: 十六进制转换为整数: 26string str_bin = "1101";  // 二进制num = stoi(str_bin, nullptr, 2);cout << "二进制转换为整数: " << num << endl;  // 输出: 二进制转换为整数: 13return 0;
}

2.4 异常处理

#include <iostream>
#include <string>
using namespace std;int main() {string str = "123abc";size_t pos;try {int num = stoi(str, &pos);cout << "整数值: " << num << endl;cout << "未解析部分索引: " << pos << endl;} catch (const invalid_argument& e) {cout << "无效输入,无法解析整数。" << endl;} catch (const out_of_range& e) {cout << "输入数字超出范围。" << endl;}return 0;
}

扩展知识

2.5 注意事项

stoi 是对 strtol 函数的一个封装,提供更现代化的接口

。如果需要处理大数,可以使用类似的函数 stoll,返回 long long 类型

。对于非整数类型的转换,可以使用 stof(float)、stod(double)等函数

 3. 常见问题与解决

3.1 如何处理输入中包含前导空格?

stoi 会自动忽略字符串前导空格,因此不需要额外处理。

示例:

std::string str = "   42";
int num = std::stoi(str);
std::cout << num;  // 输出: 42

 3.2 如何确定字符串完全被解析为整数?

可以结合 pos 参数,检查解析是否到字符串末尾:

#include <iostream>
#include <string>
using namespace std;int main() 
{string str = "42abc";size_t pos;int num = stoi(str, &pos);if (pos != str.size()) {cout << "字符串未完全解析,剩余部分: " << str.substr(pos) << endl;   //输出abc}return 0;
}

相关函数

  • stol / stoll:将字符串转换为 longlong long
  • stof / stod / stold:将字符串转换为浮点数。
  • to_string:整数转换为字符串。

 最后:将文字转化为力量

通过本文对 C++ 中 stoi 函数的详细讲解,我们可以看到它在字符串到整数转换中扮演的重要角色。从简单的整数提取到支持多进制解析,再到异常处理机制的保障,stoi 函数为程序开发提供了高效且安全的解决方案。

无论是在用户输入处理、文件解析,还是网络协议中的数据转换中,stoi 的灵活性和安全性都使其成为开发者不可或缺的工具。我们不仅掌握了它的基本用法,还了解了其参数细节、异常处理和一些典型应用场景。

最后,编程就像搭建一座桥梁,而 stoi 则是将字符串的虚拟世界连接到数值的真实世界的一块基石。在开发过程中,只要掌握它的特性并加以灵活运用,就能让你的代码更加稳健、优雅,真正实现从文字到数字的高效转化。

你的编程之旅,不止于此,期待你在更多场景中发现 stoi 的潜力!

 编程道路会经历很多困难,会想过放弃,但我想说的是事情其实没有那么难,咬咬牙就坚持过去了,最后送大家一句话  "路虽远,行则将至;事虽难,做则必成"  与诸君共勉。

下一篇文章再会!!! 

相关文章:

【C++篇】像解谜一样转换字符串:stoi 带你走向整数的世界

文章目录 前言 在现代 C 编程中&#xff0c;字符串与数字之间的转换是非常常见的需求。随着编程语言的发展&#xff0c;C 提供了多种方式来处理这种转换。stoi&#xff08;string to integer&#xff09;函数正是为了简化这一任务而被引入的。 在 C 的早期版本中&#xff0c;字…...

小U数数问题

问题描述 小U正在数偶数&#xff0c;从 0,2,4,6,8,10,12,…0,2,4,6,8,10,12,… 开始&#xff0c;依次将这些数连在一起&#xff0c;形成一个无穷长的字符串&#xff0c;例如&#xff1a;"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。 测试样例 …...

Rocky Linux 系统安装/部署 Docker

1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

程序语言语法上手题目合集

程序语言语法上手题目合集 1跑步2猜年龄3Vigenre 密码 1跑步 2.跑步 - 蓝桥云课 枚举日期&#xff0c;判断是否符合条件即可。 参考程序&#xff1a; #include<stdio.h> int y2022,m1,d1; int week6; int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int judg…...

MCU通过APB总线与FPGA 数据交互(实现JATG 模块的控制)

问题出发点: 通过MCU 的APB 将数据发送到fpga 端;fpga 端实现 jtag 模块功能,支持状态机TAP的移动主要是:从IDLE 移动到 shirft-IR 发送指令数据然后再回到 IDLE ,从 IDLE 移动到shirft-DR 发送用户数据再回到IDLE;从而可以 通过 mcu端实现jtag 协议控制。 为了实现 MC…...

Mysql的UPDATE(更新数据)详解

MySQL的UPDATE语句是用于修改数据库表中已存在的记录&#xff0c;本文将详细介绍UPDATE语句的基本语法、高级用法、性能优化策略以及注意事项&#xff0c;帮助您更好地理解和应用这一重要的SQL命令。 1. 基本语法 单表更新 单表更新的基本语法如下&#xff1a; UPDATE [LOW…...

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…...

如何使用AWS Lambda构建一个云端工具(超详细)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;如何使用AWS Lambda构建一个云端工具&#xff08;超详细&#xff09; 1 前言 1.1 无服务器架构 无服务器架构&#xff08;Serverless Computing&#xff09;是一种云计算服务模型&#xff0c;它允许开发者构建和运行…...

Scala—数组(数组定义、数组常用方法等)— 用法详解

Scala Scala-数组-用法详解 Scala一、数组的定义1. new 关键字2. Array 对象的 apply 方法3. 创建多维数组 二、数组常用方法1. length&#xff1a;获取数组的长度。2. apply&#xff1a;通过索引获取数组中的元素。3. update&#xff1a;通过索引更新数组中的元素。4. foreach…...

使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者&#xff1a;来自 Elastic Chema Martinez 在安全领域&#xff0c;能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点&#xff0c;Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…...

二分排序

二分问题之前遇到很多次了&#xff0c;不过一直是手写完整二分&#xff0c;现在转变一下想法&#xff0c;直接使用函数lower_bound和upper_bound更方便 lower_bound 有序数组中 查找第一个不小于指定值的位置。 本质二分代码&#xff1a; int lower_bound_custom(int* arr, i…...

数据库---HSQLDB使用教程详解

本学校期末的课程设计要求使用HSQLDB数据库&#xff0c;作为一个小众且轻量的数据库&#xff0c;很少人接触过&#xff0c;再加上同学们都问这个方面&#xff0c;所以就出教程&#xff0c;展示怎么使用HSQLDB。 第一步&#xff1a;启动HSQLDB 下载HSQLDB的jar包&#xff0c;因…...

Makefile基础应用

1 使用场景 在Linux环境下&#xff0c;我们通常需要通过命令行来编译代码。例如&#xff0c;在使用gcc编译C语言代码时&#xff0c;需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力&#xff0c;每次调试代码都需要重新在命令行下重新编译&#xff0c;重复…...

一个点绕任意点旋转后的点的坐标

在平面坐标上&#xff0c;任意点P(x1,y1)&#xff0c;绕一个坐标点Q(x2,y2)逆时针旋转θ角度后,新的坐标设为(x, y)的计算公式&#xff1a; x (x1 - x2)*cos(θ) - (y1 - y2)*sin(θ) x2 ; y (x1 - x2)*sin(θ) (y1 - y2)*cos(θ) y2 ; 另一个场景应用&#xff0c;坐标轴绕…...

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)

引言&#xff1a;对于嵌入式硬件这个庞大的知识体系而言&#xff0c;太多离散的知识点很容易疏漏&#xff0c;因此对于这些容易忘记甚至不明白的知识点做成一个梳理&#xff0c;供大家参考以及学习&#xff0c;本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…...

算力100问☞第16问:什么是TPU?

TPU全称是Tensor Processing Unit芯片&#xff0c;中文全称是张量处理单元芯片&#xff0c;是谷歌开发的一种特殊类型的芯片&#xff0c;用于加速人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;工作负载。TPU主要针对张量&#xff08;tensor&#xf…...

Level DB --- SkipList

class SkipList class SkipList 是Level DB中的重要数据结构&#xff0c;存储在memtable中的数据通过SkipList来存储和检索数据&#xff0c;它有优秀的读写性能&#xff0c;且和红黑树相比&#xff0c;更适合多线程的操作。 SkipList SkipList还是一个比较简单的数据结构&a…...

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中&#xff0c;Apache JMeter是一个非常流行的工具&#xff0c;它不仅能够模拟大量用户进行并发访问&#xff0c;还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器&#xff08;Post-Processor&#xff09;是JMeter中非常重要的组件之一&#xff0c;用于在…...

【视频】二维码识别:libzbar-dev、zbar-tools(zbarimg )

1、简介 ZBar可以使用多个方式识别各种条形码和二维码。 支持的格式有:EAN-13/UPC-A、UPC-E、EAN-8、Code 128、Code 93、Code 39、Codabar、Interleaved 2 of 5、QR Code和SQ Code 支持的来源有:视频流、图像文件等 libzbar-dev:二维码识别开发库 zbar-tools(zbarimg …...

EasyExcel: 结合springboot实现表格导出入(单/多sheet), 全字段校验,批次等操作(全)

全文目录,一步到位 1.前言简介1.1 链接传送门1.1.1 easyExcel传送门 2. Excel表格导入过程2.1 easyExcel的使用准备工作2.1.1 导入maven依赖2.1.2 建立一个util包2.1.3 ExcelUtils统一功能封装(单/多sheet导入)2.1.4 ExcelDataListener数据监听器2.1.5 ResponseHelper响应值处理…...

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案&#xff1a;开发语言后端php&#xff0c;tp框架&#xff0c;前端是uniapp。 一 志愿者端-小程序&#xff1a; 申请成为志愿者&#xff0c;志愿者组织端进行审核。成为志愿者后&#xff0c;可以报名参加志愿者活动。 志愿者地图&#xff1a;可以…...

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…...

小白学多线程(持续更新中)

1.JDK中的线程池 JDK中创建线程池有一个最全的构造方法&#xff0c;里面七个参数如上所示。 执行流程分析&#xff1a; 模拟条件&#xff1a;10个核心线程数&#xff0c;200个最大线程数&#xff0c;阻塞队列大小为100。 当有小于十个任务要处理时&#xff0c;因为小于核心线…...

【uni-app多端】修复stmopjs下plus-websocket无心跳的问题

从这篇文章接着向下看&#xff1a; uniapp plus-websocket 和stompjs连接教程 安卓ios手机端有效 - 简书 按照文章的方式&#xff0c;能够实现APP下stmopjs长连接。但是有一个问题&#xff0c;就是会频繁输出 res-创建连接-1- 跟踪连接&#xff0c;会发现连接都会在大约40s后…...

【SLAM文献阅读】基于概率模型的视觉SLAM动态检测与数据关联方法

A dynamic detection and data association method based on probabilistic models for visual SLAM 《基于概率模型的视觉SLAM动态检测与数据关联方法》 2024 摘要&#xff1a; 通常&#xff0c;静态特征采用多视图几何来估计相机姿态和重建环境地图。因此&#xff0c;动态特…...

Linux系统使用valgrind分析C++程序内存资源使用情况

内存占用是我们开发的时候需要重点关注的一个问题&#xff0c;我们可以人工根据代码推理出一个消耗内存较大的函数&#xff0c;也可以推理出大概会消耗多少内存&#xff0c;但是这种方法不仅麻烦&#xff0c;而且得到的只是推理的数据&#xff0c;而不是实际的数据。 我们可以…...

Selenium+Java(19):使用IDEA的Selenium插件辅助超快速编写Pages

前言 或是惊叹于Selenium对于IDEA的支持已经达到了这样的地步,又或是由于这个好用的小工具的入口就在那里,它已经陪伴了我这么久,而我这么久的时间却都没有发现它。在突然发现这个功能的一瞬间,真的是喜悦感爆棚,于是赶快写下了这篇文章。希望可以帮助到其他同样在做UI自动…...

Unity 设计模式-单例模式(Singleton)详解

设计模式 设计模式 是指在软件开发中为解决常见问题而总结出的一套 可复用的解决方案。这些模式是经过长期实践证明有效的 编程经验总结&#xff0c;并可以在不同的项目中复用。设计模式并不是代码片段&#xff0c;而是对常见问题的 抽象解决方案&#xff0c;它提供了代码结构…...

OAuth协议详解

一、基本概念 OAuth&#xff08;Open Authorization&#xff09;是一种授权协议&#xff0c;用于允许第三方应用程序以受信任的方式访问用户的资源&#xff0c;而无需共享用户的身份验证凭据。OAuth协议的核心目标是在保持用户数据安全的前提下&#xff0c;简化用户在不同应用…...

2024收官之战:车展向下,智驾向上

作者 | 德新 编辑 | 王博 广州车展在上周拉开帷幕&#xff0c;在激烈的车市竞争中&#xff0c;可以说没有一届车展比本届更加「 冰火两重天」。 在本届车展前夕&#xff0c;已经传出不少车企集团面临业务整合的消息&#xff0c;一部分品牌缺席了本届车展&#xff0c;而势头强…...

开源项目-如何更好的参与开源项目开发

开源之谜-提升自我核心竞争力 一、寻找适合自己的开源项目二、像坐牢一样闭关修炼三、最后的实践 开源代码对所有人开放&#xff0c;开发者可以基于现有代码进行扩展和创新&#xff0c;而不是从零开始&#xff0c;参与开源项目可以提升自我的技术能力&#xff0c;丰富个人的经历…...

如何重命名 Conda 环境 - 详细教程

如何重命名 Conda 环境 - 详细教程 前言重命名步骤1. 克隆现有环境2. 验证新环境3. 删除旧环境 实例演示注意事项常见问题解答Q1: 为什么 Conda 没有直接的重命名命令&#xff1f;Q2: 重命名过程会影响环境中的包吗&#xff1f;Q3: 如果克隆过程中断&#xff0c;会怎么样&#…...

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…...

Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 个人中心 管理员登录界面 管理员功能界面 电影管理 用户管理 系统管理 摘要…...

从 Mac 远程控制 Windows:一站式配置与实践指南20241123

引言&#xff1a;跨平台操作的需求与挑战 随着办公场景的多样化&#xff0c;跨平台操作成为现代开发者和 IT 人员的刚需。从 Mac 系统远程控制 Windows&#xff0c;尤其是在同一局域网下&#xff0c;是一种高效解决方案。不仅能够灵活管理资源&#xff0c;还可以通过命令行简化…...

k8s部署Nginx详细教程

Kubernetes&#xff08;简称k8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。本文将详细介绍如何使用k8s部署Nginx&#xff0c;包括创建部署配置、创建服务以及如何通过一个命令完成部署和删除。 环境准备 在开始之前&#x…...

PySpark3:pyspark.sql.functions常见的60个函数

目录 一、常见的60个函数 1、col 2、lit 3、sum 4、avg/mean 5、count 6、max 7、min 8、concat 9、substring 10、lower 11、upper 12、trim 13、ltrim 14、rtrim 15、split 16、explode 17、collect_list 18、collect_set 19、asc 20、desc 21、when 2…...

网络爬虫总结与未来方向

通过深入学习和实际操作&#xff0c;网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容&#xff0c;并结合前沿技术趋势与最新资料&#xff0c;为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一&#xff1a;高性能分布式爬虫 随…...

【优先算法】专题——双指针

1.移动零 移动零 题目描述&#xff1a; 思路&#xff1a; 本题我们把数组分块&#xff0c;将非零元素移动到左边&#xff0c;为零元素移动右边。 我们使用双指针算法&#xff08;利用数组下标来充当指针&#xff09; 两个指针的作用&#xff1a; cur&#xff1a;从左往右…...

互联网时代的隐私保护

在这个数字化时代&#xff0c;我们的生活与互联网密不可分。打开手机刷刷朋友圈&#xff0c;浏览一下购物网站&#xff0c;约个网约车&#xff0c;点个外卖&#xff0c;这些看似平常的行为都在默默产生着数据足迹。可就在这不经意间&#xff0c;我们的个人信息正在被收集、分析…...

活着就好20241124

今天是周日&#xff0c;一个同样洋溢着休闲与宁静气息的日子。亲爱的朋友们&#xff0c;大家早上好&#xff01;在经历了一周的忙碌之后&#xff0c;我们终于迎来了这个让人期待已久的休息日。周日&#xff0c;不仅是一个放松身心的绝佳时机&#xff0c;更是我们回归自我、享受…...

镁光MT25QU01GXXX norflash调试笔记

目录 前言一、芯片概述二、数据手册解释1. 数据手册获取2.内容概括 三、几个操作的代码1.复位芯片操作2.读取芯片ID3.擦除芯片扇区4.向芯片存入数据5.读取存储的数据6.其它操作函数 前言 本笔记总结如何使用MCU对nor flash进行数据存储&#xff0c;包括芯片基本介绍&#xff0…...

并行IO接口8255

文章目录 8255A芯片组成外设接口三个端口两组端口关于C口&#xff08;★&#xff09; 内部逻辑CPU接口 8255A的控制字&#xff08;★&#xff09;位控字&#xff08;D70&#xff09;方式选择控制字&#xff08;D71&#xff09; 8255A的工作方式工作方式0&#xff08;基本输入/输…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作HUD Camera以及让两个相机同时渲染屏幕二、制作HUD Canvas 1.制作法力条Soul Orb引入库2.制作生命条Health读入数据3.制作吉欧统计数Geo Counter4.制作…...

《AI大模型开发笔记》——Prompt提示词最佳实践

为什么需要提示词优化 什么是 Prompt enginnering&#xff1f; 提示词&#xff1a;解释一下什么是大语言模型的Prompt enginnering 图1. 什么是Prompt Enginnering&#xff1f; 通过上面ChatGPT的说明&#xff0c;我们可以看到&#xff0c;prompt工程化就是如何写prompt提示…...

Frontend - 防止多次请求,避免重复请求

目录 一、避免重复执行的多种情况 &#xff08;一&#xff09;根据用途 &#xff08;二&#xff09;根据用户操作 二、具体实现 &#xff08;一&#xff09;“Ajax ”结合disabled (防止多次请求)&#xff0c;避免多次点击重复请求 1. 适用场景 2. 解决办法 3. 示例 &…...

MongoDB 简介

MongoDB 简介 MongoDB 是一种流行的 NoSQL 数据库管理系统,以其灵活的数据模型、高性能和易于扩展的特点而闻名。本文将详细介绍 MongoDB 的基本概念、特点、使用场景以及如何在实践中应用。 1. MongoDB 基本概念 1.1 文档数据库 MongoDB 是一个文档数据库,它使用 JSON 风…...

Ngrok实现内网穿透(Windows)

Ngrok实现内网穿透&#xff08;Windows&#xff09; 什么是内网穿透&#xff0c;内网穿透有什么用 内网穿透&#xff08;NAT traversal&#xff09;是一种技术手段&#xff0c;使得位于内网或防火墙后面的设备能够通过外网访问。例如&#xff0c;如果你的计算机、服务器等设备…...

【Python-办公自动化】实现自动化输出模板表格报告

import pandas as pd import numpy as np# 定义时间范围 date_range = pd.date_range(start=2023-11-01, end=2024-10-31, freq=M...

医学AI公开课·第一期|Machine LearningTransformers in Med AI

小罗碎碎念 从这周开始&#xff0c;我计划每个周末录一个视频&#xff0c;分享一些医学人工智能领域的进展。 作为第一期视频&#xff0c;我打算介绍一下机器学习和Transformer在医学AI领域中的应用。 为了准备这期视频&#xff0c;总共做了24页PPT&#xff08;三部分内容&…...