蓝桥杯C++组基础知识之标准库类型string

本文详细介绍了C++标准库中的string类型,包括定义、初始化和常用操作,如读写、比较、长度获取等。此外,还讲解了处理string对象中的字符以及C标准库中与字符串相关的函数。对于程序员来说,理解和掌握这些内容对于日常编程工作至关重要。
摘要由CSDN通过智能技术生成

标准库类型string

标准库类型string表示可变长的字符序列,使用前先加头文件

#include<string>
using std::string

1、定义和初始化string对象

string s1;			//默认初始化,s1是一个空字符串
string s2=s1;		//s2是s1的副本//拷贝初始化
string s2(s1);		//s2是s1的副本//直接初始化
string s3="hiya";	//s3是该字符串字面值的副本//拷贝初始化
string s3("hiya");	//s3是该字符串字面值的副本//直接初始化
string s4=(10,'c');	//s4的内容是cccccccccc//拷贝初始化
string s4(10,'c');	//s4的内容是cccccccccc//直接初始化

2、string对象上的操作

操作说明
os<<s/cout<<s将s写到输出流os当中,返回os
is>>s/cin>>s从输入流is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is,s)//getline(cin,s)从is中读取一行赋给s,返回is
s.empty()s为空返回true,否则返回false
s.size()返回s中字符的个数
s[n]返回s中第n个字符的引用,位置n从0计起
s1+s2返回s1和s2连接后的结果
s1=s2用s2的副本代替s1中原来的字符
s1==s2如果s1和s2中所含的字符完全一样,则它们相等,返回true;否则返回false
s1!=s2string对象相等性对字母的大小写敏感
<,<=,>,>=利用字符在字典中的顺序进行比较,且对字母的大小写敏感
!!注意
  • 在将标准输入的内容读取到s中时(cin>>s;),string对象会自动忽略开头的空白(空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇到下一处空白为止。
//
string s1;
cin>>s1;		//输入"  hello world  "
cout<<s1<<endl;	//输出"hello"
//
string s1,s2;
cin>>s1>>s2;		//输入"  hello world  "
cout<<s1<<s2<<endl;	//输出"helloworld"
  • getline读取一行,以换行符结束,但换行符是被读取进来了,在把所读内容存到string对象中时不存换行符。
  • size函数返回string对象的长度,返回类型实际上时string::size_type类型(无符号类型的值)能够存放下任何string对象的大小。无符号数在与有符号数比较时,如s.size()<n(n是int型负值)这个判断结果是true。尽量避免有无符号混用。
  • string对象相加时要保证’+'号两侧至少有一个string对象
string s1="hello",s2="world";
string s3=s1+","+s2;		//正确
string s4=s1+","+"world";	//错误

3、处理string对象中的字符

cctype头文件中的函数说明(cctype也就是c语言中的ctype.h)
isalnum( c )当c是字母或数字是为true
isalpha( c )当c是字母是为true
iscntrl( c )当c是控制字符是为true
isdigit( c )当c是数字时为true
isgraph( c )当c不是空格但可以打印时为true
islower( c )当c是小写字母时为true
isprint( c )当c时可打印字符时为true(即c时空格或c具有可视形式)
ispunct( c )当c是标点符号时为true(即c不是控制字符、数字、字母、可打印空白中的一种)
isspace( c )当c是空白时为true(即c是空格、横向制表符、纵向制表符、回车符、换行符、进纸符的一种)
isupper( c )当c是大写字母是为true
isxdigit( c )当c是十六进制数字时为true
tolower( c )如果c是大写字母,输出对应的小写字母;否则原样输出c
toupper( c )如果c是小写字母,输出对应的大写字母;否则原样输出c
string s("hello,world");
for(auto c : s){//i:n-1
    if(isupper(c)){//if(isupper[i])
        //do what you want
    }
}

C标准库String函数

函数说明
strlen( p )返回p的长度,空字符不计算在内(’\0’)
strcmp(p1,p2)比较p1和p2是否相等,p1==p2返回0;p1>p2返回正值;p1<p2返回负值
strcat(p1,p2)将p2附加到p1之后,返回p1
strcpy(p1,p2)将p2拷贝给p1,返回p1
//
char ca[]={'c','+','+'};
cout<<strlen(ca)<<endl;//错误 必须以空字符作为结束的数组
//
const char ca1[]="a string example";
const char ca2[]="a different string";
if(ca1<ca2){}//未定义的:试图比较两个无关地址
if(strcmp(ca1,ca2) < 0)//和两个string对象的比较s1<s2效果一样

与旧代码的接口

string s("hello world")
char *str =s;//错误:不能用string对象初始化char*
const char *str = s.c_str();//正确c_strf

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值