C++ Primer-------string

    xiaoxiao2022-07-06  219

    前提:阅读C++ Primer 第五版笔记

    string类型表示可变长的字符序列。

    头文件:<string> 命名空间:std::string

    定义和初始化string对象 string s1; //默认初始化,直接构造,s1是空字符串 string s2=s1; //s2是s1的副本,调用拷贝构造函数 string s2(s1); //直接构造 string s3="hi" //拷贝初始化 string s3("hi"); //直接构造 string s4(10,'c'); //直接构造 s4内容是'cccccccccc' string s4=string(10,'c');//拷贝构造 赋值

    s1=s2;

    读写string对象 string s; cin>>s; //将string对象读入s,遇到空白停止 cout<<s<<endl; //输出s

    string对象会自动忽略开头的空白(空格符,换行符,制表符等)并从第一个真正字符开始读取,直到下一个空白。 4. 使用getline读取一整行

    getline(cin,string)

    函数从cin输入流中读入内容,直到遇到换行符(换行符也被读取),然后将内容存入string对象中(不存换行符)。如果第一个字符就是换行符,则结果为空字符串。 5. empty和size

    s.empty() ; // 若s为空,则返回true,否则返回false

    size成员函数 size()返回的是一个无符号整型,size_type因此在大小对比时,应使用无符号整型数据类型。 用法:

    s.size(); //返回s的长度

    例如:

    int n=-1; if(s.size()<n);//由于负整数会自动转换成无符号整型,也就是一个很大的值,所以该语句几乎都为`true`

    比较string对象 规则: 1. 若两个string对象长度不同,且两个string对象相应位置的字符相同,则较短的对象小于较长对象。 2. 对比两个string对象中相应位置第一个不同的字符,就是比较结果。

    字符串或字符与string相加 标准库允许把字符串或字符转换成string对象,所以需要string对象的地方可用这两个类型代替。 注意:当把string对象和字符、字符串类型混在一条语句使用时,必须确保加法运算符两个运算对象至少有一个是string。

    string s1=s+","; //正确 string s2=s1+'c'+"c"; //正确,因为string(s1+'c')返回一个string然后+“c” string s3="he"+","+s2; //错误,因为前两个先运算,都是字符串 迭代string对象内元素 方法1(c++11):使用for语句 for(declaration: expression) statement

    其中,expression是一个对象,表示一个容器类型,包括string。declaration负责定义一个变量,该变量将被用于访问容器内的元素。每次迭代,其内容都会初始化为下一个元素内容。

    string s("some"); for(auto c:s) cout<<c<<endl; //将string s中的元素遍历,并输出

    若需要改变元素值,则必须把循环变量定义成引用类型

    string s("some"); for(auto &c:s) c=toupper(c); //将s中的每个元素变成大写

    方法2:使用下标

    if(!s.empty()) cout<<s[0];
    最新回复(0)