读C++ primer——string标准库

string类型

string类型支持长度可变的字符串,标准库string类型的目的就是满足对字符串的一般应用,使用时需加入头文件

#include<string>

string对象的定义与初始化

string s1//默认构造函数
stirng s2(s1)//将s2初始化为s1的一个副本
string s3("value")//将s3初始化为字符串字面值副本
string s4(n,'c')//将s4初始化为字符c的n个副本

读取string时的特点:

  • 读取并忽略开头所有的空白字符(空格符、换行符、制表符等)
  • 再次遇到空白字符时,读取中止

读入未知数目的string对象

#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
while(cin>>s)
cout<<s<<endl;
return 0;
}

用getline读取整行文本

string(输入流对象,stirng对象)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
cout<<s<<endl;
return 0;

getline不会忽略开头的换行符,如果开头第一个是换行符,string将停止读入并返回,且此时string将会被置为空string

stirng对象的操作

string s;
s.empty()//s为空串,返回true,否则为false
s.size()//返回s中字符的个数
s[n]//返回字符
s1+s2//s1和s2拼接形成一个新字符串,返回新字符串
s1=s2//s1内容替换为s2
s1==s2//比较串s1和串s2,相等返回true,否则false
!=,<,<=,>,>=//保留原意思,成立返回true,否则false

注意:

  1. size()返回的不是整型数,其类型为size_type(相似于unsigned型),任何存储string的size操作结果的变量必须为string::size_type类型,不要把操作结果赋值给int型
  2. 如果要把s2追加到s1的末尾,则可以使用s1+=s2
  3. +操作的左右操作数必须至少有一个是string类型
string s2=s1+'A'+'B';//ok
stirng s2='A'+'B'+s1;//error
  1. 通过对象获取字符时,其下标值为string::size_type类型,但也可用整型值进行获取
for(string::size_type i=0;i!=s.size();i++)
cout<<s[i]<<endl;

string对象中字符的处理

以下函数适用于string和任何char值

使用时需加入头文件

#include<ccype>
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
ispunct(c)//如果c是标点符号,返回true
isspace(c)//如果c是空白字符,返回true
isupper(c)//如果c是大写字母,返回true
isxdigit(c)//如果c是十六进制数,返回true
tolower(c)//如果c是大写字母,则返回其小写字母形式,否则直接返回c
toupper(c)//如果c是小写字母,则返回其大写字母形式,否则直接返回c

猜你喜欢

转载自blog.csdn.net/pipihan21/article/details/106170893