C++ primer 三 处理string对象中的字符

初始化string对象的方式

string si                               默认初始化,si是一个空串 

string s2 (si)                        s2是si的副本

string s2 = si                      等价于s2 (si) , s2是si的副

string s3 ("value")              s3是字而值"value"的副木,除了字面值M/Ti的那个空宁符外 

string s3 = "value"              等价s3 ("value”),S3是字面值”value”的副本

string s4(n, ' c ')                  把s4初始化为II』连续n个字符c纽成的串

string对象上的操作

       一个类除了要规定初始化其对象的方式外,还要定义对象上所能执行的操作。其中,类既能定义通过函数名调用的操作,也能定义<<、+等各种运算符在该类象上的新含义。表中列举了 string 的大多数操作。


使用getline读取一整行

        有吋我们希望能终得到的字符串中保留输入时的空内符,这时应该用getline 函数代替原來的>>运算符。getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为\n (注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)。getline只耍一遇到换行符就结束读取操作并返冋结果,哪怕输入的一开始就是换行符也是如此。如果输入真的一开始就是换行符,那么所得的结果是个空string。
       和输入运算符
>>一样,getline也会返冋它的流参数。因此既然输入运算符能作为判断的条件,我们也能用getline的结果作为条件。例如,可以通过改写之前的程序让它一次输出一整行,而不再是每行输出一个词了:

int main()

{

string line;

//每次读入一整行,直至到达文件末尾 

while (getline(cin, line))

 cout << line << endl; 

return 0;

)

处理string对象中的字符

        我们经常需要单独处理string对象中的字符,比如检查一个string对象是否包含空白,或者把string对象中的字母改成小写,再或者查看某个特定的字符是否出现等。
        这类处理的一个关键问题是如何获取字符本身。有时需要处理string对象中的每一个字符,另外一些时候则只需处理某个特定的字符,还有些时候遇到某个条件处理就要停下來。以往的经验告诉我们,处理这些情况常常要涉及语言和库的很多方面。
       另一个关键是要知道能改变某个字符的特性。在cctype头文件中定义了一组标 准庳函数处理这部分工作,表列出了主要的函数名及其含义。


下面是一个例子

#include<iostream>
using std::cin;
using std::cout;
using std::string;
int main(void)
{
string str;
cout<<"input string:\n";
cin>>str;
//把str中的字母转换称x 
for(char &c:str)//auto &c:str
{
c='x';
}
cout<<str<<"\n";
cout<<"input string:\n";

getline(cin,str); 
string str1;
getline(cin,str); //输入一行字符串 
//计算str1中的标点符号 
for(decltype(str.size())index=0;index!=str.size();index++)
{
if(!ispunct(str[index]))
    str1+=str[index];
}
cout<<str1<<"\n";

return 0;
}


输出结果:











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值