C++中的标准库类型——string

string 

标准库类型string是一种可变长的字符序列。string定义在std命名空间中。在使用string前,需要:

 #include<string> 
 using std::string;

一、声明与定义

string name;

二、初始化

string s1;   // 默认初始化,空序列
string s2(s1); 
string s3 = s1;
string s4 ("aaa"); // 字面值初始化最后存在的一个空字符会被丢弃
string s5 = "aaa";
string s6 (4 , 'a');  //由4个a组成字符序列进行初始化
string s( cp, n); //s是cp指向的数组中前n个字符的拷贝,此数组至少包含n个字符
string s(s2 , pos2); // s是string s2从下标pos2开始的字符的拷贝,若是pos2>s2.size(),则此行为为定义。
string s(s2 , pos2 , len2);//s是从s2下标pos2开始的len2个字符的拷贝。

三、方法

1、字符序列的读写
os << s;  //将s写到输入流当中,返回os,这样意味着可以多个s可以连续输出,即: os << s1 << s2;
is >> s;  //将s读到字符序列当中,字符序列之间以空白作为分隔,返回is。这样意味着可以多个s可以连续输入,即: is >> s1 >> s2; 
getline( is , s); //读取一行,保留空白,直到遇到换行符,注意换行符也是一个空白,会被保留
在执行读取的操作中,string对象会自动的忽略开头的空白(空格符、换行符、制表符等)并从第一个非空白的字符读取,直到遇到下一个空白。

2、empty和size操作
s.empty();//根据string对象是否为空返回一个bool类型的值
s.size();//返回string对象的长度,即其中字符的个数
关于 string::size_type 类型: size 函数返回的是这种类型,并不是一般的 int 或者 unsigned 类型。它是一个无符号类型的值而且足够放下任何 string 对象的大小。对于表达式中存在无符号数需要警惕! 可以使用关键字 auto 或者 decltype 来推断数据的类型。

3、大小比较
//利用字符在字典中的顺序进行比较,并且对大小写敏感
s1 == s2;  
s1 != s2; 
s1 <= s2; 
s1 < s2; 
s1 >= s2; 
s1 >  s2; 
s.compare(args);//具有多种参数形式
关于字符序列的大小比较:
a)如果两个 string 对象的长度不同,而且较短的 string 对象的每个字符都与较长的 string 对象对应位置上的字符相同,就认为较短 string 对象小于较长 string 对象。即:如果一个是另一个的子集(该说法可能不准确),则认为是一个小于另一个。
b)如果两个 string 对象在某些位置上不一样,则 string 对象的比较结果其实就是 string 对象中的第一个不同字符的比较结果。

4、字符序列查找
//arg的形式([c , pos]、[s2 , pos]、[cp , pos]、[cp , pos , n])
s[n];//字符序列中第n个字
s.find(args);//查找s中args第一次出现的位置
s.rfind(args);//查找s中args最后一次出现的位置
s.find_first_of(args);//在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args);//在s中查找args中任一字符最后一次出现的位置
s.find_first_not_of(args);//在s中查找第一个不在args中的字符
s.find_last_not_of(args);//在s中查找最后一个不再args中的字符

5、修改
//args的形式:[str],[str,pos,len],[cp,len],[cp],[n,c],[b,e],[初始化列表] 
s1 = s2;//赋值
s1 + s2;//两个字符序列可以直接相加
s.insert(pos , args);//在pos之前插入args指定的字符
s.erase(pos , len);//删除从pos开始的len个字符
s.assign(args);//将s中的字符替换为args指定的字符
s.append(args);//在s的末尾追加args
s.replace(range , args);//删除s中范围range内的字符,替换为args指定的字符
修改操作中的操作很多函数是可以重载的。函数的返回方式依赖于输入参数的设定,并不是所有的函数可以使用所有的参数方式。

6、字符处理
//定义在头文件cctype中
isalnum(c);//当c是字母或者数字时返回真
isalpha(c);//当c是字母时返回真
isdigit(c);//当c为数字时返回真
isxdigit(c);//当c为十六进制时为真
iscntrl(c);//当c是控制字符时返回真
isgraph(c);//当c不是空格但可以打印时返回真
isprint(c);//当c是可以打印字符时返回真(即c是空格或者有可视形式)
islower(c);//当c是小写字母时返回真
isupper(c);//当c是大写字母时返回真
ispunct(c);//当c是标点符号时返回真
isspace(c);//当c是空白时返回真
tolower(c);//输出c的小写字母形式
toupper(c);//输出c的大写字母形式







  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值