C++Primer第五版学习笔记 第三章
第三章 字符串,向量和数组
命名空间
-
域操作符::的含义是编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字,因此,std::cin 的意思是要使用命名空间std中的名字cin。
-
可以使用using声明命名空间,using namespace::name,如using std::cin; 声明了std标准库的cin。
-
可以使用using声明整个命名空间,如using namespace std;
-
位于头文件的代码,一般来说不应该使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件去,如果头文件有using声明,那么使用了该头文件的文件都会有这个声明,可能会产生冲突。
string标准库
- 声明string库
#include<string>
using std::string;
- 初始化string对象
string s1; // 默认初始化为空字符串
string s2 = s1; // s1的副本
string s3 = 'string'; // 字符串的副本
string s4 = string(10, 's'); // 内容是'ssssssssss'
// 前面是拷贝初始化, 后面是直接初始化。
// 直接初始化的可读性更高!
string s5(10, 's'); // 同上
string s6('string');
- string操作
操作 | 含义 |
---|---|
cin>>s | 输入字符串,以空格或回车键结尾 |
cout<<s | 输出字符串 |
getline(cin, s) | 从is中读取一行赋值给s |
s.empty() | 字符串为空返回True,否则false |
s.size() | 返回字符串长度,string::size_type类型 |
s[n] | 返回下标为n的字符 |
s1+s2 | 返回s1和s2连接后的结果 |
s1=s2 | 赋值 |
s1==s2 s1!=s2 | 比较,大小写敏感 |
<, <=, >, >= | 利用字典中的顺序对字符串比较,大小写敏感 |
- 注意的是,由于size()函数返回的不是int类型,尽可能使用auto来自动判别size的返回值,避免int和unsigned混用带来的问题。