您的位置:首页 > 编程语言 > C语言/C++

C++学习第六天:string

2014-05-31 15:10 176 查看
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的字符,位置计算从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)
转大写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: