C++ Primer从入门到放弃第三章-命名空间声明与标准库类型string

C++ Primer从入门到放弃第三章-命名空间声明与标准库类型string

第三章字符串向量和数组 [命名空间声明与标准库类型string]


命名空间的using声明:


using namespace::name; //一旦声明就可以直接使用

using std::cout;       //我们可以直接使用cout了

注意: 头文件中不应包含using声明,可能会导致意外的错误。

标准库类型sting:
标准库类型string表示可变长的字符序列,使用它必须包含string头文件。

#include <string>;
using std::string;

定义和初始化string:

string s1;      // 默认初始化s1是一个空串
string s2 = s1; // s2是s1的一个副本
string s3 = "ssdsd" //s3是字面量字符串的一个副本
string s3("value");

|string的操作|
|:---------:|
| os<<s |
| s1+s2 |
| s1==s2 |
| <,>,<= |
| s.empty()|
| s.size() |
| s[n] |

// 读取字符串
string s;
cin>>s;             //将string读入s,遇到空白停止。
count<< s << endl;  //输出s

string 对象的比较,我们可以直接使用相等性运算符(==,!=),进行比较,当然也可以使用逻辑运算符(>,>=),
对两个string对象进行比较。比较是大小写敏感的,且是子串相同位置逐一字符进行比较。

string对象可以进行赋值,相加的操作,同时可以与字面量进行相加。

//可以看出 字面量string并不是标准库的string对象。
#include <typeinfo>
int main()
{   string f;
    std::cout << typeid("11").name()<<'\n'<<typeid(f).name() <<std::endl;
}
//输出 A3_c
//NSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE


处理string对象中的字符:

cctype 头文件中定义了一组处理字符的函数。处理每个字符我们可以使用基于范围的for语句


 <!-- for(declaration:expression) -->
    <!-- statement -->
string str("some thing");
for(char c : str)
  cout<<c<<endl; //输出每个字符
//将字符串转化为大写
for(char &c : str)
   c = toupper(c); //c是引用所以会改变字符串
cout<<str<<endl;

如果我们需要访问部分或者处理字符串,我们可以使用索引或者迭代的方式机进行。

string str("some thing");
cout<<str[0]<<endl;  //输出s


在利用索引或者迭代的方式处理时我们必须保证下标小于size()。

禽兽一只:《C++ Primer》从入门到放弃zhuanlan.zhihu.com图标

编辑于 2018-05-27