string类和常用方法

Arduino String类构造方法和常用方法详解 构造方法包括String()、String(const char* cString)和String(char c),用于创建字符串对象。常用方法包括length()、concat()、indexOf()、substring()、toInt()和equals()等,用于字符串长度、连接、查找、提取、转换和比较等操作。这些只是Arduino String类的一些常用方法,还有许多其他的方法可以用于字符串操作和处理。substring()方法用于提取字符串的子字符串,可以指定起始位置和结束位置。 阅读详情

string类

    string类是由头文件string支持的(头文件string.h和cstring支持对C-风格字符串进行操纵的C库字符串函数,但不支持string类)。

 

构造函数

    string类一共有6个构造函数(ctor,这是传统C++中构造函数的缩写)。类中将string::npos定义为字符串的最大长度,通常为无符号int的最大值。

 

 

string类的构造函数

 

 

    string实际上是模板规范basic_string<char>的一个typedef。

    size_type是一个依赖于实现的整型,在头文件string中定义。

    NBTS是(null-byte-terminated string)的缩写,表示以空字符结束的字符串——传统的C字符串。

 

    最后一个构造函数有一个模板参数:
    template<class Iter> string(Iter begin,Iter end);

 

    通常,begin和end可以是迭代器——广泛用于STL中的广义化指针。该ctor用于数组时: srting(array+3,array+10);将用array[3]至array[9]的值初始化string对象(因为数组名相当于指针)。用于string对象(假设为string_ob): string(&string_ob[3],&string_ob[10]); 由于对象名不会被看做是对象的地址,而string_ob[3]因为[]被重载,所以返回的是一个char值。因此使用地址操作符 & 后,被当做指针对待。

 

    该类还重载了+=操作符,它将一个字符串附加到另一个字符串的后面;重载的=操作符用于将一个字符串赋给另一个字符串;重载的<<操作符用于显示string对象;重载的[]操作符用于访问字符串中的各个字符。

 

string类输入

 

对于C-字符串,有3中输入方式:
char info[100];
cin>>info;                    // read a word
cin.getline(info,100);   // read a line,discard /n
cin.get(info,100);        // read a line,leave /n in queue

 

对于string对象,有两种输入方式:
string stuff;
cin>>stuff;              // read a word
getline(cin,stuff);
    // read a line,discard /n

 

两个版本的getline()都有一个可选参数,用于指定使用哪个字符来确定输入的边界:
cin.getline(info,100,':');  //read up to :,discard :
getline(stuff,':');
         //read up to :,discard :

 

    string版本的getline()将自动调整目标string对象的大小,使之刚好能够存储输入的字符。这使得无需指定读取多少个字符的数值参数。


    读取C-风格字符串的函数是istream类的方法(cin是调用对象),而string版本是独立的函数(cin是一个传递的函数参数)。

 

这种规则也适用于>>形式:
cin.operator>>(fname);    // ostream class method
operator>>(cin,lname);
    // regular function

 

string版本的getline()读取输入的结束条件:
(1) 到达文件尾,这种情况下,输入流的eofbit将被设置,意味着方法fail()和eof()都将返回true。

(2) 遇到分界字符(默认为/n),这种情况下,将把分界字符从输入流中删除,但不存储它。

(3) 读取的字符数打到最大允许值(string::npos和可供分配的内存字节数种较小的一个),这种情况下,将设置输入流的failbit,意味着方法fail()将返回true。

 

     输入流对象有一个统计系统,用于跟踪流的错误状态。检测到文件尾后将设置eofbit寄存器,检测到输入错误时将设置failbit寄存器,出现无法识别的故障时将设置badbit寄存器,一切顺利时将设置goodbit寄存器。

 

     关于输入流对象状态寄存器的更多详细介绍请查看<<cin深入分析(下) - cin的错误处理>>。

 

     string版本的operator>>()函数,它不断读取,直到遇到空白字符并将其留在输入队列中。空白字符指的是空格、换行符和制表符,普遍地说,是任何将其作为参数来调用isspace()时,该函数返回true的字符。

 

     (指定了分界字符后,非分界字符将被视为常规字符,比如将换行符读为常规字符)

 

使用字符串
     string对象对全部6个关系操作符都进行了重载。其中每个关系操作符都以三种方式被重载,使其能够将string对象与另一个string对象、C-风格字符串进行比较,并能够将C-风格字符串与string对象进行比较。

 

     size()和length()成员函数都可以返回字符串中的字符数。length()成员来自较早版本的string类,而size()则是为提供STL兼容性而添加的。

 

下表简要地描述了find()方法的4个版本

 

 

string类重载的find()方法

 

 

     string库还提供了相关的方法: rfind()、find_first_of()、find_last_of()、find_first_not_of()和find_last_not_of(),它们的重载函数特征标都与find()方法相同。

 

     rfind()方法查找子字符串或字符最后一次出现的位置。
 
     find_first_of()方法在字符串中查找参数中任何一个字符首次出现的位置。例如:


int where = snake1.find_first_of("hark");
将返回r在"cobra"中的位置(即索引3),因为这是"hark"中各个字母在"cobra"首次出现的位置。


     find_last_of()方法的功能与此相同,只是它查找的是最后一次出现的位置。因此,语句:


int where = snake1.find_last_of("hark");

将返回a在"cobra"中的位置。

 

     find_first_not_of()方法在字符串中查找第一个不被包含在参数中的字符:


int where = snake1.find_first_not_of("hark");
将返回c在"cobra"中的位置,因为"hark"中没有c。


     find_last_not_of()方法的功能与此相同,只是它查找的是最后一个,因此,语句:


int where = snake1.find_last_not_of("hark");
将返回b在"cobra"中的位置。

 

string对象内存分配
     string对象能够自动调节内存大小。因此很多C++实现将分配一个比实际字符串大的内存块,为字符串提供了增大空间。然而,如果字符串不断增大,超过了内存块的大小,程序将分配一个大小为原来两倍的新内存块,以提供足够的增大空间,避免不断的分配新的内存块。

 

方法capacity()返回当前分配给字符串的内存块的大小(单位为字节):
string_Object.capacity();


方法reserve()使其能够请求内存块的最小长度(单位为字节):
string_Object.reserve(100);

 

c_str()方法返回一个指向C-风格字符串的指针:


string filename;
cout<<"Enter file name: ";
cin>>filename;
ofstream fout;
fout.open(filename.c_str());

(open()方法要求使用一个C-风格字符串作为参数)

 

重载C函数以使用string对象

 

比较两个字符串是否相等,不区分大小写:
boot stricmp(const string & strA,const string & strB)
{ return stricmp (strA.c_str(),strB.c_str() ) == 0; }

 

    由此可见,c_str()方法提供了一条将C-风格字符串函数转换为string对象函数的路径。

 

    关于string类的更多方法,请查看<<string类方法介绍>>

C++string类 仅供参考 . 立即下载

相关推荐

string 类及所有的方法(c++)

string类 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include //注意这里不是string.h string.h是C字符串头文件

C++string类的常用方法

C++string类的常用方法

聂可以的博客 4535

拯救你的备份数据!STM32F407 RTC Tamper功能防篡改设计指南

本文详细介绍了STM32F407 RTC Tamper功能在物联网数据安全中的应用,包括硬件触发、数据清除和时间戳记录等核心机制。通过实战案例和代码示例,展示了如何构建多层次的防御体系,确保敏感数据在物理入侵时自动擦除并记录精确时间戳,适用于智能门锁、工业传感器等高安全需求场景。

weixin_28278377的博客 278

C++string类常用方法

C++string类常用方法 1、string(const char *s) :将 string 对象初始化为 s 指向的字符串 string str("hello"); 2、string(size_type n,char c) :创建一个包含 n 个元素的 string 对象,其中每个元素都被初始化为字符 c string str(10, 'a'); 3、string(const string &str) :将一个 string 对象初始化为 string 对象 str(复制构造函数) str

Goallegoal的博客 9万+

Android keymint(keymaster)一RKP

Android RKP

weixin_47139576的博客 1万+

开源模型应用落地-qwen模型小试-入门篇(二)

在windows环境下,使用transformer设置模型参数/System Prompt/历史对话

以微薄之力,予他人些许温暖. 3233

C++ | string用法指南

本文主要介绍STL容器之一 ---- string,在学习C++的过程中,我们要将C++视为一个语言联邦(摘录于Effective C++ 条款一)。如何理解这句话呢,我们学习C++,可将其分为四个板块;分别为C、Object-Oriented C++(面向对象的C++)、Template C++(模板)、STL。本文就介绍STL中的string;

Nice_W的博客 2万+

从一个 ASIN 看透亚马逊:商品模型背后的增长飞轮

在亚马逊电商体系中,每件商品背后都有一套严密的商品建模逻辑。本篇文章以“ASIN 的一生”为线索,系统拆解了亚马逊的商品模型:从飞轮战略出发,剖析 SDP(Single Detail Page)机制如何实现标准化展示;再到 ASIN 编码、父子变体结构与 Offer 分离模型,逐层解析商品信息如何被建构、聚合与呈现。通过图解与案例,文章帮助读者理解商品建品流程、同款聚合原则、价格控制机制等核心逻辑,避免常见运营误区,是一份面向运营、产品、技术人员的实用参考指南。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

C++编程语言中string类介绍

string类是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和C语言的字符串之间有着良好的接口。

liitdar的博客 31万+

基于深度学习YOLOv8的花卉检测与识别系统(附完整资源+PySide6界面+训练代码)

通过本项目,我们成功实现了基于YOLOv8的花卉检测与识别系统,涵盖了数据预处理、模型训练、推理与实时检测、以及GUI界面的实现。YOLOv8在花卉检测中的高效性和准确性为实际应用提供了强有力的支持。

斌擎科技 715

Vue3 - 强力解决前端下载二进制流pdf文件、下载成功后打开空白问题解决,或者获取PDF文件流,将blob对象转换成下载链接打开后一片空白(无论是否使用pdf插件下载,还是原生方法下载都完美解决)

vue3前端下载二进制流pdf文件,下载成功,打开空白问题解决,js下载PDF文件流,打开空白问题,VUE3 h5中的文件流下载和指定的url下载总结(解决下载后的pdf打开空白情况)pdfjs打开文件流空白,解决pdf文件流,预览全是空白页,pdf文件流,下载正常,但是预览全是空白页,前端JS获取PDF文件流,将blob对象转换成下载链接打开后一篇空白的问题,前端文件流下载后文件空白,前端下载文件流PDF文件显示空白 或 无法打开,在线预览PDF文件打不开白屏怎么办,前端axios请求二进制数据流转换生成

🏆 前端领域优质创作者 4615

C++string 类常用函数

转自:http://www.cppblog.com/lmlf001/archive/2006/04/19/5883.html string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="h...

435

大模型长对话中上下文无法承载全部历史,如何压缩或提取重点

如果说截断和滑动窗口是“硬性”压缩,那摘要生成技术就显得“软”多了,也更接近于智能化的解决方案。它的思路是:不直接丢弃历史,而是通过自然语言处理(NLP)技术,把冗长的对话记录浓缩成一段简短的摘要,保留核心信息。这样既能大幅减少token数量,又不至于丢失关键内容。这种方法通常会借助预训练模型,比如BART或T5,它们擅长从长文本中提取重点内容。

大模型大数据攻城狮的专栏 1584

String和StringBuffer类的常用方法

在敲代码的时候,我时常忘记一些简单的方法,因此,后续我也会在我的博客中写一些最简单的代码.所以大家不要嫌我太水文章(笑).对于这些方法,我想尽可能的以最简洁的形式给大家分享出来.因为很对时候,我们不是不会用,而是忘了怎么敲.还有一些不了解的新朋友,也可以看一眼就很明了,这就是我写这类博客的初衷.那么废话不多说,我们来看代码.前文有讲过String和StringBuffer类的对比和分析如果大家有需求可以翻看我之前的博客,这里不再赘述了.那么今天的分享就到这里吧.

2301_79175212的博客 1093

嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

嵌入式大杂烩 146

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

String类和String类常用方法

在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。而且在面试题中也频繁用到处理字符串的题目。String、StringBuff和StringBulider之间的区别等。

Lizhihao_的博客 1202

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java.lang中的String类和StringBuilder类介绍和常用方法

String在Java中,String属于一种引用类型,表示字符串类型。实际上,在Java中,所有字符串字面量都是作为String类的对象实例化的,即使用双引号""包裹的都是String类的对象。所以使用表示的是创建了一个String类的对象内容为"abc",而s就是对象名,示意图如下:当对象s指向了"hello"时,此时堆中存在一个空间,其内容为"hello",而接下来想在原来的字符串中拼接"world"是做不到的,所以将拼接后的结果存入一个新空间返回给s,示意图如下:因为String。

小何代码咖啡馆 1979

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JAVA关于String类和Integer类一些常用方法总结

关于String类和Integer类一些常用方法总结前言关于String类String类简介String类常用方法toCharArray()方法charAt(int index)方法indexOf(String str,int fromIndex)方法关于Integer类Integer类简介Integer类常用方法max和min方法compare方法总结相关相关代码 前言 在开始介绍之前,先要...

cn89214的博客 1132

String类的概述和常用的方法

String类的概述和使用(掌握) (1)多个字符组成的一串数据。 其实它可以和字符数组进行相互转换。 (2)构造方法: A:public String() B:public String(byte[] bytes) C:public String(byte[] bytes,int offset,int lengt...

weixin_44435612的博客 215

【JAVASE】带你了解String类的常用方法和常见操作

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法

chendemingxxx的博客 2656

String和String Builder类的常用方法及两者的关系

一、String类的常用方法 1、比较字符串的内容 方法名 作用 public boolean equals(Object anObject) 比较字符串的内容是否相同,严格区分大小写(一般用于用户名和密码) public boolean equalsIgnoreCase(String) 忽略大小写的比较两个字符串的内容是否相同 2、字符串长度 方法名 作用 public int length() 返回此字符串的长度

shmilyche的博客 620

object中的方法,和String类常用api

String 是 Java 中最常用的不可变字符序列类,提供丰富的操作方法。

huing的博客 1151

Java中String类和常用方法

Java中String类和常用方法 实例化String对象 第一直接赋值 package com.qn.array; public class Test4 {    public static void main(String[] args) {     String name="zhangsan";     System.out.println("姓名:"+name);   

我的世界 1164

String 类的概述和常用方法

String 类的概述和常用方法 String类的概述 String的概述: String类表示的字符串。java程序中的所有字符串,如 "abc",实现这个类的实例。 String类的特点: 字符串是常量,它们的值不能被创建后改变。支持可变字符串字符串缓冲区。因为字符串对象是不可改变的,所以它们可以被共享。 例如: String str = "abc"; 相当于: char ch[] = {'a', 'b', 'c'}; String str = new Strin

qq_39153706的博客 211

Java中String类的构造方法和常用方法

String类的重要构造

m0_58052874的博客 1266

string类的常用方法和需要注意的方面

在Java中,String类是一个非常常用的类,它代表字符串对象。在实际开发中,我们经常需要对字符串进行各种操作,比如拼接、查找、替换等。String类提供了丰富的方法来满足这些需求。下面我们来介绍一些String类的常用方法。

weixin_52104995的博客 195
上一篇: 类型转换操作符
下一篇: string类方法介绍
TypeCool
博客等级 码龄22年 58粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值