C++学习第六天:string

C++学习第六天:string

        //读入未知数目的string对象
        string word;
        while(cin>>word){
                 cout<<word<<endl;       
         
          }
 
 
 
         //使用getline读取一行字符串,与java的Scanner对象的nextLine()方法差不多
          //getline接受两个参数:一个输入刘对象和一个string对象,getline并不忽略行开头的换行符。
          //只要getline遇到换行符,将停止读入并返回,即使是第一个字符也一样。
 
          string line;
          while(getline(cin,line)){
                  cout<<line<<endl;
          }
 
          */
 
          //字符串的操作:
          /*
          s.emty()   判断是否为空
          s.size()   返回s字符串中字符的个数
          s[n]       访问下表为n的字符,位置计算从0开始
          s1+s2      +加号操作,和java字符串操作的+号效果一样
          s1=s2      赋值,把s1内容替换为s2的副本
          s1==s2     比较两个字符串的内容,相等则返回true,否则返回false(C++比较的是内容,java比较的是对象)
          !=         与==号的一样,比较两个字符串的内容
          <,<=,>,>=  保持这些操作符惯有的含义(类似java的compareTO()方法)


string::size_type类型
size()成员函数返回的是string::size_ypte类型的值。
string类类型和许多其他类型都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关。
size_type定义为与unsigned型具有相同的含义。
任何存储string的size操作结果的变量必须为string::size_type类型。注意,不要把size的返回值赋给一个int变量

string对象的关系操作符:大于、小于、大于等于。。。。
关系操作符比较两个string对象时采用了和字典排序相同的策略。
1.长度不同,短的string对象是长string对象的子串,则短的string对象小于长的string对象
2.如果两个string对象的字符不相同,则比较第一个不匹配的字符。


string对象的赋值
C++大多数标准类库支持赋值操作,string是其中一个。
string s1,s2="string";
s1=s2;
从概念上讲,string赋值时的操作:先把s1占用的相关内存释放掉,然后在分配给s1足够存放s2副本的内存空间,最后把s2中的所有字符复制到新分配的内存空间。


C++重载了+号,使得两个字符串可以相加(java的字符串操作也是类似,与Java不同的是C++的加号在进行string对象和
字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型。)例如:
string s1="string1";
string s2="string"+"string"+s1;  //这里将会报错
C++读取字符串对象的字符时,可以直接以数组的形式来读取,例如:
char s=s[0]; //读取字符串第一个字符。
C++标准库不要求检查索引值,所用索引的下标越界是没有定义的,这样往往会导致严重的运行时错误。也就是说下标越界在编译的时候不会出错或提示(Java则在编译的时候抛出异常)


C++对字符串的处理函数定义在cctype头文件中:以下为cctype的定义函数:
isalnum(c) 判断是否是字母或是数字
isalpha(c) 判断是否是字母
iscntrl(c) 判断是否是控制字符
isdigit(c) 判断是否是数字
isgraph(c) 如果不是空格,但可以打印,则为true
islower(c) 判断小写
isupper(c) 判断大写
isprint(c) 判断是否是可打印
isspace(c) 判断空格
isxdigit(c) 判断16进制数
tolower(c) 转小写
toupper(c) 转大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值