string 详解

Delphi 中的字符串类型 string 详解 在 Delphi 7 中,字符串类型默认实现为 AnsiString,其内存结构包含引用计数、长度字段和以 NULL 结尾的字符数据。理论上字符串长度可达 2,147,483,647 字符(2GB),但实际受限于 32 位系统内存分配,通常不超过 512MB。使用时需注意:索引从1开始、避免直接操作内存、大文本建议使用 TMemoryStream 替代。关键特性包括自动内存管理、写入时复制机制,以及与 C 风格字符串的二进制兼容性。 阅读详情

构造:

#include<string>
int main()
{
	string s0;  //空字符串
	string s1 {"As simple as that!"}; //用C风格字符串构造
	string s2 {s1};  //拷贝构造函数
	//析构函数几乎总是被隐式调用
	string s3 {7};  //错误: 没有string(int)
	string s4 {'a'};  //错误: 没有string(char);
	string s5 {7,'a'}; // 7个a
	string s6 {0};  //危险:传递nullptr
	const char* p = 0;
	string s7{p};  //可能正确也可能错误,取决于p的值。
	
	//string::npos 表示一个超出string长度的位置,通常用来表示string尾部。
	string ss {"Fleetwood Mac"};
	string ss2 {ss,0,9};  //"Fleetwood"
	string ss3 {ss,10,string::npos}; //"Mac"
	//注意,子串的表示方式是(位置,长度)而不是【开始,结束)。 
}

基本函数:
#include<string>
int main()
{
	s == s2;
	s != s2;
	s < s2;    //按字典序比较 
	s <= s2;
	s > s2;
	s >= s2; 
	
	n = s.size();  //n为s中的字符数(当前) 
	n = s.length();  //n = s.size()
	n = s.max_size();  //n为s.size()的最大可能值
	s.resize(n,c);  //令s.size() == n; 新增元素的值均为c
	s.resize(n);    //s.resize(n,C{})
	s.reserve(n);    //确保s不用分配更多空间即可保存n个字符
	s.reserve();    //无影响: s.reserve(0)
	n = s.capacity();  //s的容量(最大容纳数量) 
	s.shrink_to_fit()  //令s.capacity() == s.size() 
	s.clear();    //令s变为空
	s.empty();   //s为空?空的话返回true 
}


#include<string>
int main()
{
	s[i];   //(不进行范围检查)
	s.at[i]; //若s.size() <= i 抛出range_error
	s.front(); //s的第一个元素
	s.back(); // s的最后一个元素
	s.push_back(c); //追加字符c
	s.pop_back();  // 删除s的尾字符: s.esrase(s.size()-1)
	s+=x;  //在s的末尾追加x;x可以是一个字符,一个string,一个C风格字符串等等
	s = s1+s2; //连接
	s.swap(s2);  //交换s和s2的值
	swap(s,s2);  //同上。
	
	p = s.begin();	//类stl操作也可以用 
	p = s.end(); 
	
	s.assign(s2,pos,n)   //s获得字符s2[pos:pos+n)
	s.erase(pos,n); //删除s中从s[pos]开始的n个字符;s.size()变为max(pos,s.size()-n).
	
	s.repalce(); // 将一个子串替换成为另一个子串,并相应调整string大小。
	
	//x可以是一个字符,string,C风格的字符串等 
	pos = s.find(x);   // 在s中查找x;pos为匹配的第一个字符的下标或string::npos
	pos = s.rfind(x);  //逆序查找。未找到返回string::npos 
}



如何从string中找到特定元素并删除:

string str("ab'defg");
string::iterator it;
for (it =str.begin(); it != str.end(); ++it)
{
    if ( *it == '\'')
    {
        str.erase(it);
    }




DIY T12烙铁头驱动难题:用几个电容二极管,搞定NMOS上管驱动(附Multisim仿真) 本文详细介绍了如何利用电荷泵电路解决DIY T12烙铁头驱动中的NMOS上管驱动难题。通过巧妙组合电容和二极管,构建低成本高效的升压电路,实现栅极高压驱动需求。文章包含具体电路设计、元件选型建议、实际搭建注意事项以及Multisim仿真验证,为电子爱好者提供了一套完整的解决方案。 阅读详情

相关推荐

基于ADS1299的8通道脑电采集系统硬件设计实战

生物电信号采集是医疗电子与可穿戴设备中的关键环节,微弱信号的高保真放大与数字化处理直接影响系统性能。高精度模数转换器与低噪声模拟前端设计成为工程实践的核心。ADS1299作为专用生物电测量芯片,集成多通道低噪声放大器与24位Δ-Σ ADC,广泛应用于脑电、心电等生理信号检测。本文基于ADS1299构建8通道脑电采集系统,详细阐述硬件架构、电源与参考设计、输入保护、PCB布局布线、固件SPI配置及数据读取,并结合实测数据分享噪声抑制与调试经验,为EEG采集设备开发提供完整参考。

weixin_29169505的博客 224

C++ string类字符串的基本用法详解:初始化、拼接、插入、查找、删除、其他常用方法

一、初始化: string str; //定义一个空的字符串 char cstr[] = "I have a dream"; //定义一个字符数组 str = "I have a dream"; //字符串赋值方法1 string s1 = str; string s2 = "I have a d...

liu_feng_zi_的专栏 3119

IFIX数据库Datebase当前值问号

IFIX数据库Datebase当前值问号,已解决,亲测有效 在OPC PowerTool有数据的情况下,IFIX数据库Datebase当前值显示???? 问题分析及解决方法 我的IFIX5.8版本,其它版本可参考 打开IFIX工作台:应用程序–任务控制–I/O驱动–OPC Client;查看OPC驱动是否被禁用,点击启动,变成激活状态即可;若点击启动无法激活OPC驱动,需要重新安装OPC驱动,方法如下: 下载I/O Driver文件 下载链接:https://download.youkuaiyun.com/down

Ron_Tso的博客 2759

asString()和toString()的区别

在写代码的时候,遇到了该问题,于是就去优快云社区搜索答案,看了很多之后总结下来,这两者之间并没有什么联系,完全没有关系,toString()方法就是将其他类型转换成字符串类型,而asString()方法是java里面Claim接口的一个抽象方法,具体内容可以搜寻jwt解析token相关的内容。

weixin_59479961的博客 2628

浅谈天线 - - - GNSS/BT/4G/2.4G

全球定位导航系统,最成熟的就是美利坚,我大中华,俄罗斯,还有就是欧洲的一个(太次不谈)所以我们在项目调试的时候,小尺寸的陶瓷天线上一般兼容2个频段,体积大一点的可以兼容三个频段,采用组合的形式 GPS+BD GPS+GLONASS GLONASS+BD 或者是单频段的定位天线陶瓷PATC陶瓷片:陶瓷片面积越大,介电常数越大,其共振频率越高,接收效果越高,这就是为什么都推荐使用大一点的陶瓷天线的原因银层:陶瓷天线表面的银层可以影响天线的共振频率,理想的GNSS陶瓷片频点准确落在1575.42MH

BLACKHOLE6的博客 1万+

转录组分析中的Fastp和FastQC:如何快速检测数据质量并优化流程

本文深入探讨了转录组分析中数据质量控制的核心流程,重点介绍了Fastp和FastQC两款工具的组合应用。FastQC负责对原始测序数据进行全面质量评估,生成可视化报告;Fastp则能一站式完成接头切除、低质量序列过滤、长度筛选等关键质控步骤。文章提供了详细的参数解读、实战脚本和自动化流程构建指南,帮助研究人员快速检测数据质量并优化预处理流程,为下游的差异表达等分析奠定可靠基础。

weixin_28452161的博客 181

记录|as string和ToString()的区别

如果你确定input.Tag不为null,并且希望在转换失败时引发异常,那么使用input.Tag.ToString()可能更合适。如果你不确定input.Tag是否为null,或者希望避免异常,那么使用input.Tag as string可能更好。

技术小白=-=的博客 726

告别拼音!用VSCode+Dosbox-X搞定汇编语言课程设计里的中文姓名显示

本文详细介绍了如何利用VSCode和Dosbox-X解决汇编语言课程设计中中文姓名显示的问题。通过配置开发环境、理解GB2312编码及正确使用汇编指令,学生可以告别拼音显示,实现中文字符的正确输出。文章还提供了完整的代码示例和常见问题排查方法,帮助读者快速掌握这一实用技能。

weixin_30872337的博客 424

asString函数解释

asString函数是一个将数据类型转换为字符串类型的函数。它可以将数值、布尔值、对象等转换为字符串,以便于在输出或存储时使用。

weixin_35753291的博客 1002

PTGui使用教程

PTGui使用教程为啥使用ptgui开始使用ptgui 为啥使用ptgui ptgui是一个全景拼接软件,在海思hi3559上做视频拼接的时候,需要拼接参数,这是就需要使用到ptgui,这里可以在该网站下下载ptgui:下载地址 开始使用ptgui 第一步,加载图片,我这里添加了三幅图 然后添加控制点(可以先多对准几次图像,这样会自动生成一些控制点,但是不保证准确),建议控制点不要太密集 点开镜头设置,勾选以下几个选项以及配置好镜头类型,如下图 点开优化器,在高级界面中配置如下参数,最后点

what_wrong的博客 1万+

SQL2000在Win10上安装完整指南:兼容模式、SP4补丁与远程连接配置

数据库兼容性是老系统迁移与运维中绕不开的难题。当历史遗留的SQL Server 2000遭遇全新的Windows 10环境,安装程序常因系统版本检测失败而拒绝运行,这背后是旧版安装程序与NT内核版本间的识别错位。通过兼容模式模拟旧系统环境、以管理员身份运行安装程序,并处理注册表挂起与杀毒软件干扰,即可突破基础安装障碍。安装后的SP4补丁与TCP/IP端口配置,则是保障服务稳定与远程连接的关键。这一技术路径广泛适用于制造企业MES、进销存系统及医院HIS等仍依赖老旧数据库的场景,为IT运维与数据迁移测试提供了

weixin_29266679的博客 437

C++中String的语法及常用接口用法

在C语言中,string是一个标准库类(class),用于处理字符串,它提供了一种更高级、更便捷的字符串操作方式,string 类提供了一系列成员函数和重载运算符,以便于对字符串进行操作和处理。在学习 string 前,我们不妨先来了解一下 string 类到底是什么,有什么用呢?我们先来了解一下基本的概念吧C++标准库都是英语解释。我们也应该试着去适应,不懂的可以查阅。当然,在这里我就直接给出翻译,主要是以下内容:字符串是表示字符序列的类;最为常用的无非就是我们用串string来构造一个对象,也就是存储一

shiwei0813的博客 368

基于FDTD的涡旋光束发射器设计

为实现涡旋光束在小型设备中的应用,提出一种圆柱孔光栅蚀刻硅微环谐振腔结构,器件半径仅为4.1μm。建立一个理论模型,利用偶极子点表示沿微环腔内壁的光栅元件散射辐射,推导输出光场表达式,建模结果验证该结构可在不同波长下选择性地产生各种拓扑数的涡旋光束。此外,对器件进行性能分析与参数优化,结果表明,微环波导宽度过小会大大增加微环的辐射损耗。当微环波导宽度为450nm、耦合间距为100nm时,1 579nm波长附近的谐振峰输出功率为16.3dB,Q值为15 800。

qq_61890005的博客 827

C++ string 详解

C++ string 详解 任何人对本文进行引用都要标明作者是Nicolai M.Josuttis /////////////////////////////////////////////////////////////////////////////////// C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一

NeWnIx 572

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++ string详解

C++ string 详解 任何人对本文进行引用都要标明作者是Nicolai M.Josuttis /////////////////////////////////////////////////////////////////////////////////// C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C+

在思索中前行! 2738

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

String详解

1 String 概述 2 String不可变的好处 3 String,StringBuffer和 StringBuilder的区别 4 字符串常量池(String Pool) 5 new String(String类中两种对象实例化的区别) 6 String 常用方法(字符串构造、String对象的比较 、字符串查找、转化、字符串替换、字符串拆分、字符串截取、其他操作方法)...

crazy_xieyi的博客 5728

String类详解

J 博客 247

String 在Java中的用法详解

认识String类 和 String的使用1、创建字符串:(1)常见的构造String的方式:(2)String的基本概念: 1、创建字符串: (1)常见的构造String的方式: ① 方式一: String str = "You are very cool!"; ② 方式二: String str = new String("You are very cool!"); ③ 方式三: char[] array = {'c','o','o','l'}; String str = new String(ar

小乔不掉发的博客 9179

C++ string类详解

文章内容主要包括C++中string类的详细介绍

TTKunn的博客 1794

Java String详解(一)

对于Java来说String对象可以说是使用最频繁的,字符串对象在内存中占据了最大的空间快。我们平时在编程的时候经常使用String,也最容易忽略对于String的认识,因此深入的认识String有助于我们写出的代码更高效更安全。

晴空๓ 1056

C++ string 用法详解

转自:C++ String详解 任何人对本文进行引用都要标明作者是Nicolai M.Josuttis /////////////////////////////////////////////////////////////////////////////////// C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中

ubunfans的专栏 955

string.h 详解

string.h 简介 C语言标准库中一个常用的头文件,在使用到字符数组时需要使用。 函数简介 函数 功能简介 memchr 在内存块中定位字符的位置 memcmp 把两个内存块的内容进行比较。 memcpy 复制内存块的内容 memmove 移动内存块中的内容 memset 以字节方式填充内存块 ...

ultraji的博客 4万+

Java【String类】的详解

Java【Sting类】的详解 🐲1.了解String类 🐲 2.String类常用方法 🦄 2.1 字符串构造 🦄2.2 字符串查找 🦄2.3 字符串截取 🦄2.4 字符串替换 🦄2.5 字符串拆分 🦄2.6 字符串修改 🦄2.7 相互转化 🦄2.8 String对象比较 🦄2.9 去除字符串左右空格 🐲 3. 字符串常量池 🦄 3.1 理解池的概率 🐲 4. 字符串不可变性 🐲 5. StringBuilderStringBuffer

m0_58761900的博客 2万+
上一篇: getline()函数
下一篇: 求最小公倍数或最大公约数
mwhybmj
博客等级 码龄10年 8粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值