C++ primer 读书笔记系列——(1)标准库string类型

与其它标准库一样,使用string类型对象,必须包含相关头文件。如果提供了合适的using声明,则编出来的程序相对简洁些:

#include<string>

using std::string;

 

(一)string的初始化的几种形式:

 

string s1; // 默认构造函数,s1为空串

string s2(s1); //将s2初始化为s1的一个副本

string s3("value"); //将s3初始化为一个字符串字面值的副本

string s4(n,'c');  //将s4初始化为一个字符的n个副本

 

(二)string的读写:

 

第一种形式的读入——直接读入:

string str;

cin>>str;

第二种形式的读入——利用getline()函数整行读入:

string str;

getline(cin,str);

需要注意的是:getline()并不忽略开头的换行符,只要getline遇到换行符,即使它输入的是第一个字符,getline()也将停止读入并返回,如果第一个字符就是换行符,则读入的字符串为空字符。

 

(三)string对象的常用操作:

 

string s,s1,s2;

string::size_type n;

s.empty()  //如果s为空串,则返回true,否则返回false

s.size()     //返回s字符的个数

s[n]          //返回s中第n个字符

s1+s2      //将s1和s2连接起来组成一个新字符

s1=s2      //把s1内容替换为s2的副本

s1==s2     //若s1和s2内容完全相同,则返回true,否则返回false

s1+=s2     //将s2的内容添加到s1的后面

 

1. if(st.size==0) 和 if(st.empty()) 效果等同。

2.string::size_type 为一个unsigned类型的整数值,它可以保证足够大的能够保证任意string类型的长度。  特别注意:任何存储string的size返回值为string::size_type类型的值,特别重要的是:不要把size的返回值赋给一个int变量。

3. 和字符串字面值的连接是允许的,如:

   string s1("hello");

   s1=s1+"abc";

但要注意,+号的左右操作数必须有一个是string类型的!

   string  s1("hello");

   s1="abc"+"c";   //error!

   string  s2="world";

   s1=s1+"abc"+s2+"c";    //right

 

 

(四)string对象中字符的处理

 

我们经常需要对string中的单个字符进行处理,现有一系列常用字符操作函数,适用于string对象的字符,这些函数都在cctype头文件中定义。

 

isalnum(c)   判断c是否为字母或数字,是则返回true;

isalpha(c)    判断c是否是字母,是则返回true;

iscntrl(c)      如果c是控制字符,则返回true;

isdigital(c)   如果c是数字,则返回true;

isgraph(c)   如果c是数字,则为true;

islower(c)   如果c是小写字母,则为true;

isprint(c)    如果c是可打印的字符,则为true;

ispunct(c)  如果c是标点符号,则为true;

isupper(c)  如果c是大写字母,则为true;

isxdigit(c)  如果c是十六进制,则为true;

tolower(c) 如果c是大写字母,则返回其小写字母形式,否则直接返回c;

toupper(c) 如果c是小写字母,则返回其大写字母形式,否则直接返回c。

 

 

下给出一例子,统计string中标点符号的个数:

string  s("hello,world!")

string::size_type  sum=0;

for(string::size_type ix=0;ix!=s.size();ix++)

{

   if(ispunct(s[ix]) )

      sum++;

}      

cout<<sum<<"  punctuation characters in  "<<s<<endl;  //print the sum of s;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值