首页 > 其他分享 >字符串类

字符串类

时间:2024-11-09 08:46:44浏览次数:1  
标签:字符 cout int 字符串 include string

17.6字符串类
字符串类string是不同于字符数组的字符串处理方式。使用字符串类,需要包含以下头文件:
#include<string>
在学习过程中,必须分清楚string类和字符数组处理字符串的异同。
17.6.1 字符串类:输入输出(cin/cout)
可以使用cin和cout来读写string类型。
使用cin读入string类型,会忽略开头的制表符、换行符、空格,当再次碰到这类字符就停止(并不会读取这类字符)。
#include<iostream>
#include<string>
using namespace std;
int main(){
  string s;
  int total=0;
  while(cin>>s){
    total++;
    cout<<total<<" "<<s<<endl;
  }
  return 0;
}
17.6.2 字符串类:读取(getline)
读取包含空格类字符的一行。
getline(cin,s);
其中,s是字符串类的对象。
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s;
  int total=0;
  while(getline(cin,s)){
    total++;
    cout<<total<<" "<<s<<endl;
  }
  return 0;
}
17.6.3 字符串类:构造string对象和初始化
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s;//空串
  string s1="hello,hhh";//初始化为hello,hhh
  string s2("OK");//初始化为"OK"
  string s3(s1);//用s1初始化s3
  string s4(4,'c');//初始化为4个字符c
  cout<<s<<endl;
  cout<<s1<<endl;
  cout<<s2<<endl;
  cout<<s3<<endl;
  cout<<s4<<endl;
return 0;
}
17.6.4 字符串类:string类字符元素的访问
s[i]返回s索引i处字符的引用,不查是否出界
s.at(i)返回索引处i处字符的引用,检查出界
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,hhh";
  cout<<s[1]<<" "<<s.at(4)<<endl;
  cout<<s[20]<<endl;
  cout<<s.at(20)<<endl;
  return 0;
}
17.6.5 字符串类:重载运算符
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s1;
  string s2;
  s1="hh";
  s2=s1;//s2成为s1的拷贝
  cout<<s2<<endl;
  s1+=s2;//s2的字符数据连接到s1的尾部
  cout<<s1<<endl;
  cout<<s1+s2<<endl;//将s2连接到s1的尾部,s1不变
  //基于字典序的比较,返回布尔值
  cout<<(s1==s2)<<endl;
  cout<<(s1!=s2)<<endl;
  cout<<(s1<s2)<<endl;
  cout<<(s1>s2)<<endl;
  cout<<(s1<=s2)<<endl;
  cout<<(s1>=s2)<<endl;
return 0;
}
17.6.6 字符串类:常用成员函数
length() 求长度
size() 求长度
empty() 判断字符串是否为空
substr() 求子串
erase() 删除若干字符串
insert() 插入字符
replace() 替换字符
find系列函数 查找子串
1.求长度函数length/size
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,hhh";
  cout<<s.length()<<endl;
  cout<<s.size()<<endl;
  return 0;
}
2.判断空串函数empty
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s1="hello,hhh";
  string s2="";
  cout<<s1.empty();
  cout<<s2.empty();
  return 0;
}
1. 求子串函数substr
返回从pos开始的len个字符组成的字符串
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,h1h2";
  string s1=s.substr(2);
  string s2=s.substr(2,3);
  cout<<s1<<endl<<s2;
  return 0;
}
4.删除字符函数erase
删除pos开始的n个字符,返回修改后的字符串。源字符串也被修改。
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,h1h2";
  string s1=s.erase(6);
  string s2=s.substr(1,2);
  cout<<s1<<endl<<s2;
  return 0;
}
1. 插入字符函数insert
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s=",";
  s.insert(0,"heo");//从第0个位置,插入字符串
  cout<<s<<endl;
  s.insert(4,"world",2);//从第4个位置,插入字符串的前2个字符
  cout<<s<<endl;
  s.insert(2,2,"l");//从第2个位置,插入2次字符'l'
  cout<<s<<endl;
  s.insert(s.end(),"r");//在末尾插入字符'r'
  cout<<s<<endl;
  s+="ld!";//在末尾插入字符串
  cout<<s<<endl;
  return 0;
}
1. 替换字符函数replace
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,world";
  //删除第7个字符后的6个字符,以"hh1"代替
  s.replace(7,6,"hh1");
  cout<<s<<endl;
  //删除第7个字符后3个字符,以"h2222h2"前6个字符代替
  s.replace(7,3,"h2222h2",6);
  cout<<s<<endl;
  //删除第7个字符后的6个字符,以3个z字符代替
  s.replace(7,6,3,'z');
  cout<<s<<endl;

  return 0;
}
1. 查找系列函数find
找字串:
find:从前往后找
rfind:从后往前找
找到第一个或者最后一个出现在某个字符串中的字符:
find_first_of
find_first_not_of
find_last_of
find_last_not_of
#include<iostream>
#include<string>

using namespace std;
int main(){
  string s="hello,world!";
  string f=",!";
  cout<<s.find('l',1)<<endl;//从第1个开始查找字符'l'的首次出现
  cout<<s.find("lo",7)<<" "<<string::npos<<endl;//字串的首次出现,不存在返回string::nops
  cout<<s.rfind("lo",1)<<endl;//往前查找
  cout<<s.find_first_of(f,2)<<endl;//从第2个位置开始查找在字符串f中的字符
  cout<<s.find_last_of(f)<<endl;//从后面开始查找在字符串f中的字符
  cout<<s.find_first_not_of(f)<<endl;//从开始查找不在字符串f中的字符
  cout<<s.find_last_not_of(f,100)<<endl;//从后面开始查找不在字符串f中的字符
  return 0;
}

标签:字符,cout,int,字符串,include,string
From: https://www.cnblogs.com/fushuheng/p/18536278

相关文章

  • byte数组转16进制,二进制字符串
    1)16进制字符串a)c#内置apibyte[]bytes=BitConverter.GetBytes(123);varhexStr=BitConverter.ToString(bytes); b)实现1///返回低字节顺序十六进制字符串(低字节在左侧)publicstaticstringToHexString(byte[]bytes){char[]hexChars="012345678......
  • 看一遍就会用——面向对象:类和对象,实例属性,实例方法,字符串表示
    python面向对象1.类和对象2.实例属性3.实例方法4.字符串表示1.__str__方法2.__repr__方法1.类和对象在Python中,类和对象是面向对象编程(OOP)的核心概念。类(Class)是创建对象的蓝图或模板,它定义了对象将拥有的属性和方法。对象(Object)则是根据类创建的具体实例,它包含了类......
  • 详解:字符串常量池
            字符串常量池是Java运行时环境(JRE)的一部分,它用于存储字符串字面量。字符串字面量是源代码中直接用双引号括起来的字符串,例如"hello"。在Java中,字符串是不可变的,这意味着一旦创建了一个字符串对象,它的值就不能改变。        当Java编译器遇到字符串字......
  • 前端入门一之JS对象、字符串对象、数组对象、Data()对象等
    前言JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是JS常用的内置对象;这篇文章是本人大一学习前端的笔记;欢迎点赞+收藏+关注,本人将会持续更新。文章目录目录总览1、对象1.1、创建对象(object)利用字面量创建对象对象的调用变量......
  • 华为机试HJ29 字符串加解密
    首先看一下题描述对输入的字符串进行加解密,并输出。加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。解密方法为加密的逆过程。......
  • 华为机试HJ30 字符串合并处理
    首先看一下题描述按照指定规则对输入的字符串进行处理。详细描述:第一步:将输入的两个字符串str1和str2进行前后合并。如给定字符串"dec"和字符串"fab",合并后生成的字符串为"decfab"第二步:对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从......
  • FastAPI 查询参数与字符串校验详解:类型、校验规则与元数据设置
    FastAPI查询参数与字符串校验详解:类型、校验规则与元数据设置本文详细介绍了FastAPI中查询参数的设置与校验方法,涵盖了可选参数、默认值、必要参数和参数列表的处理方式。通过使用Query类,开发者可以为查询参数添加额外的校验规则,如最小长度、最大长度、正则表达式匹配......
  • Pwn之格式化字符串漏洞
    0x00格式化字符串的原理格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式,常见的格式化字符串函数有:类型函数基本介绍输入scanf从标准输入读取格式化输入gets用于从标准输入读取一行............输出printf输出到stdoutfprintf输出到指定FIL......
  • 代码随想录算法训练营第九天|LeetCode151.翻转字符串里的单词、卡码网:55.右旋转字符串
    前言打卡代码随想录算法训练营第49期第九天︿( ̄︶ ̄)︿首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。今日题目LeetCode151翻转字......
  • ton jetton 发送字符串的方式
    func(tTonApiServiceImpl)TransferToken(ctxcontext.Context,tokenContractAddrstring,toAddrstring,amountbig.Int)(string,error){ recipientAddr:=tongo.MustParseAddress(toAddr) w,err:=wallet.DefaultWalletFromSeed(t.cfg.LotteryOwnerSeed,t.lc......