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)
转大写
//读入未知数目的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)
转大写
相关文章推荐
- C++ Data Structure 学习笔记 (2011.5.3)——传值,指针,引用的区别及Vector与String的详细用法
- C++之string学习笔记(2)
- C/C++学习笔记33:C++中标准库string类型
- c++ 学习——string
- C++学习:string用法
- c++学习---String字符串类(类3)
- c++学习 - int 和 string 的相互转换
- C/C++日常学习总结(第十篇)string的实现&文件流操作
- C++学习:C++primer第六天
- C++基础学习—string
- C++学习笔记-5-字符串(string)
- C++ 标准模板库学习之 string 类 详解 (一) 将一个句子中每个单词的单词字母顺序翻转 关于npos find_first_not_of find_first_of getline
- c++学习笔记--C++Primer第4版--标准库类型string
- C++之string学习笔记(1)
- C++学习笔记 string 中处理字符的方法
- C++之string学习笔记(1)
- C++ Standard Stl -- SGI STL源码学习笔记(08) string
- C++ STL学习笔记2--String
- C++学习与实践(一):const引用与string类型
- String类库--C++学习中的迷你项目(1)