C++标准库类型string

1.定义和初始化string对象

string s1;            //默认初始化,s1是一个空串
string s2(s1);        //s2是s1的副本
string s2=s1;         //等价于s2(s1)
string s3("value");   //s3是字面值"value"的副本,除了字面值最后的空字符外
string s3="value";    //等价于s3("value")
string s4(n,'c');     //把s4初始化为由连续n个字符c组成的串

 直接初始化和拷贝初始化

拷贝初始化:用等号(=)初始化一个变量

直接初始化:不使用等号,初始化一个变量

string s5="hiya";    //拷贝初始化
string s6("hiya");   //直接初始化
string s7(10,'c');   //直接初始化,s7的内容是cccccccccc

2.string 对象上的操作

读写string对象 

在执行读写操作时,string对象会自动忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇到下一处空白为止

string s;            //如果输入是"      Hello World!    "
cin>>s;              //输出将是"Hello"
cout<<s<<endl;


//想要输出"HelloWorld!",我们可以分段输入
string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;

读取未知数量的string对象

string word;
while(cin>>word)            //反复读取,直至到达文件末尾
    cout<<word<<endl;       //逐个输出单词,每个单词后面紧跟一个换行
  

 使用getline读取一整行

string line;
//每次读入一整行,直至到达文件末尾
while(getline(cin,line))
    cout<<line<<endl;

 string的empty和size操作

empty函数根据sring对象是否为空返回一个对应的bool值

size函数返回string对象的长度(即string对象中字符的个数

string::size_type类型

 size_type是定义在类string的一种类型(无符号类型的值)

编译器可以通过autodecltype推断变量的类型

auto len =line.size();    //len的类型是string::size_type

注意:如果一个表达式中已经有了size()函数就不要再使用int了,这样可以避免混用int和unsigned可能带来的问题。

3. 处理string对象中的字符

cctype头文件中的函数

isalnum(c) 当c是字母或数字时为真 isalpha(c) 当c是字母时为真 iscntrl(c)        当c是控制字符时为真 isdigit(c) 当c是数字时为真 isgraph(c) 当c不是空格,但可以打印时为真 islower(c) 当c是小写字母时为真 isprint(c) 当c为可打印字符时为真(包括空格) ispunct(c) 当c为标点符号时为真 isspace(c) 当c是空白时为真 isupper(c) 当c是大写字母时为真 isxdigit(c) 当c是16进制数字时为真 tolower(c) 如果c时大写字母,输出其小写字母;否则原样输出 toupper(c) 如果c时小写字母,输出其大写字母;否则原样输出

 基于范围的for语句

for (declartion:expression)

        statement 

expression:一个对象,用于表示一个序列

declaration:定义变量,该变量将被用于访问序列中的基础元素。每次迭代,declaration部分的变量将会被初始化为expression部分的一个元素值。

一个例子,将string对象中的字符每行一个输出出来:

string str("some string");
//每行输出str中的一个字符
for(auto c : str)        //对于str中的每个字符
    cout<<c<<endl;       //输出当前字符,后面紧跟一个换行符

另一个例子,统计string对象中标点符号的个数:

string s("Hello World!");
//punct_cnt的类型和s.size的返回类型一样
decltype(s.size()) punct_cnt=0;
//统计s中标点符号的数量
for(auto c :s)
    if(ispunct(s))        //对于s中的每个字符
        ++punct_cnt;      //如果该字符时标点符号
    cout<<punct_cnt
        <<" punctuation characters in "<<s<<endl;
/*
    程序输出的结果将是:
    3 punctuation characters in Hello World!
*/
        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值