c++ primer学习笔记6_标准库string
2015-10-10 22:11
387 查看
3.1命名空间using的声明
到目前为止。我们用到的库函数基本都属于命名空间using。例如std::cin。标准读入。Std::cout标准输出。下面介绍更为便捷的using声明,有了using声明,就无需使用专门的前缀,也能够使用它的名字了。Using声明的形式如下:
按照规定,每个using声明引入命名空间中的一个成员。例如:
一般来说,位于头文件的代码,不应该使用using声明。
3.1.2 标准库类型string
标准库类型string是表示可变长的字符序列。使用string类型必须包含string的头文件。作为标准库的一部分,string也定义与std命名空间里。下面实例:
那么如何定义和初始化string对象呢。可以有好几种方法。来看实例
我们来看他们分别是什么意思,第一句是定义了一个string对象s1,它是要默认初始化。一般为空串。第二句,定义了一个s1的副本s2.第三句,定义了s3,内容为hello,第四局为连续10个c。注意,如果是用=来初始化一个变量,实际上式拷贝初始化,,如果不使用=,则是直接初始化。
再来看string可以进行的操作。首先是读写string对象,我们知道一般用iostream来读写内置类型的值,也可以是使用io操作符来读写。比如
也可以这样读写如:
如果是读写未知数量的整数,可以这样:
有时我们希望在得到的字符串中保留输入的空白符,这是可以使用getline,getline函数的参数是一个对象和一个输入流。函数从给定的输入流中读入内容,直到换行符为止,把所读的内容存入string对象中。Getline对换行符非常敏感,只要一碰到换行符立即结束,输出结果。不带半点马虎的。就像是老鼠见了猫,撒腿就跑。哈哈。下面来个例子。
然后来说说empty函数。它是干嘛的呢??
Empty函数根据string对象是否为空返回一个布尔值。Empty同样是string的一个成员函数,举个例子
Size函数是返回string对象长度的。来看一下:
那么大家想一想size函数的返回值是什么呢,你们肯定又错了,它的返回类型是string::size_type,它是一个无符号类型的值,而且能够存放下任何string对象的大小。我们可以用auto或者decltype推断它的类型,由于它是无符号整数型。注意,如果还有有符号型,千万别搞乱了,否则会出大错啊。
另外,string中定义了几种用于比较字符串的运算符。首先是相等运算符包括==和!=,它是用来检验string对象是否相等或不等。字符串相等意味着长度相同并且包含的字符也全部一样。当然还有》=,《=,等等,作用就不言而喻了。注意,上面这些运算符都是按照字典顺序的。
1.如果两个string对象的长度不同,而较短的字符串都与较长的字符串对应相同,就是较短的小于较长的。
2.如果两个string对象在某个位置对应不一致,那结果是第一个相异的结果。
举个例子。
根据规则1可断定str小于phrase。根据规则2,可判断slang大于phrase。
对于两个对象相加,就很简单了,就是把左侧的运算对象与右侧的运算对象串接起来就ok,来看例子
还有一个要提醒大家,字符串字面值和string类型是不同的类型,不要混淆。
到目前为止。我们用到的库函数基本都属于命名空间using。例如std::cin。标准读入。Std::cout标准输出。下面介绍更为便捷的using声明,有了using声明,就无需使用专门的前缀,也能够使用它的名字了。Using声明的形式如下:
按照规定,每个using声明引入命名空间中的一个成员。例如:
using namespace::name;
一般来说,位于头文件的代码,不应该使用using声明。
3.1.2 标准库类型string
标准库类型string是表示可变长的字符序列。使用string类型必须包含string的头文件。作为标准库的一部分,string也定义与std命名空间里。下面实例:
#include<iostream> using std::cin; using std::cout; using std::endl; int main() { cout<<"enter two numbers:"<<endl; int v1,v2; cin>>v1>>v2; cout<<"the sum of"<<v1<<"and"<<v2<<"is"<<v1+v2<<endl; return 0; }
那么如何定义和初始化string对象呢。可以有好几种方法。来看实例
string s1; string s2=s1; string s3="hello"; string s4(10,"c");
我们来看他们分别是什么意思,第一句是定义了一个string对象s1,它是要默认初始化。一般为空串。第二句,定义了一个s1的副本s2.第三句,定义了s3,内容为hello,第四局为连续10个c。注意,如果是用=来初始化一个变量,实际上式拷贝初始化,,如果不使用=,则是直接初始化。
再来看string可以进行的操作。首先是读写string对象,我们知道一般用iostream来读写内置类型的值,也可以是使用io操作符来读写。比如
int main() { string s; cin>>s; cout<<s<<endl; return 0; }
也可以这样读写如:
string s1,s2; cin>>s1>>s2; cout<<s1<<s2<<endl;
如果是读写未知数量的整数,可以这样:
int main() { string word; while(cin>>word) { cout<<word<<endl; } return 0; }
有时我们希望在得到的字符串中保留输入的空白符,这是可以使用getline,getline函数的参数是一个对象和一个输入流。函数从给定的输入流中读入内容,直到换行符为止,把所读的内容存入string对象中。Getline对换行符非常敏感,只要一碰到换行符立即结束,输出结果。不带半点马虎的。就像是老鼠见了猫,撒腿就跑。哈哈。下面来个例子。
int main() { stirng line; while(getline(cin,line)) { cout<<line<<endl; } return 0; }
然后来说说empty函数。它是干嘛的呢??
Empty函数根据string对象是否为空返回一个布尔值。Empty同样是string的一个成员函数,举个例子
while(getline(cin,line)) { if(!line.empty()) { cout<<line<<endl; } }
Size函数是返回string对象长度的。来看一下:
string line; while(getline(cin,line)) { if(line.size()>80) { cout<<line<<endl; } }
那么大家想一想size函数的返回值是什么呢,你们肯定又错了,它的返回类型是string::size_type,它是一个无符号类型的值,而且能够存放下任何string对象的大小。我们可以用auto或者decltype推断它的类型,由于它是无符号整数型。注意,如果还有有符号型,千万别搞乱了,否则会出大错啊。
另外,string中定义了几种用于比较字符串的运算符。首先是相等运算符包括==和!=,它是用来检验string对象是否相等或不等。字符串相等意味着长度相同并且包含的字符也全部一样。当然还有》=,《=,等等,作用就不言而喻了。注意,上面这些运算符都是按照字典顺序的。
1.如果两个string对象的长度不同,而较短的字符串都与较长的字符串对应相同,就是较短的小于较长的。
2.如果两个string对象在某个位置对应不一致,那结果是第一个相异的结果。
举个例子。
string str="hello"; string phtase="hello world"; string slang="hiya";
根据规则1可断定str小于phrase。根据规则2,可判断slang大于phrase。
对于两个对象相加,就很简单了,就是把左侧的运算对象与右侧的运算对象串接起来就ok,来看例子
string s1="hello"; string s2="world"; string s3=s1+s2; s1+=s2;
还有一个要提醒大家,字符串字面值和string类型是不同的类型,不要混淆。
相关文章推荐
- 各种排序算法的分析与实现(C++版)
- c++ primer学习笔记5_复合类型续2
- c++类与c struct的区别
- hdoj 2029 Palindromes _easy version C++
- 黑马程序员--C语言之指针<一>
- hdoj 2028 Lowest Common Multiple Plus C++
- 基于Gsoap 的ONVIF C++ 库
- c/c++程序存储区
- C++primer学习:关联容器(3)
- B树算法与实现 (C语言实现)
- 重学C++Primer笔记6---指针、typedef、const、define彻底理解
- C++---if(!cin)与if(!(cin >> xxx))
- 字符转二进制_C++实现(续)
- C++Primer第五版 练习11.31-32(解答)
- C++Primer第五版 练习11.28(解答)
- C++Primer第五版 11.3.5节练习
- C++继承
- C++学习笔记16——成员函数
- C++学习笔记15——局部对象与内联函数
- C++学习笔记14——默认实参