C++ primer: C++中string标准库类型
2013-03-18 21:38
501 查看
(C++ primer读书笔记)2013.3.18 zzy @B309
C++标准库提供string类型,支持长度可变的字符串。使用时要包含头文件string,还要对名字string做using声明。
初始化:string标准库支持几个构造函数,在没有指明对象初始化式时,系统使用默认构造函数。
输入输出:string对象用标准输入cin读,用标准输出cout写,下面是几种典型实践:
1.用标准输入/输出操作符:>> and <<:
输入操作符>>在读取string类型时:
·读取并忽略开头所有的空白字符(空格、换行符、制表符);
·读取字符直至再次遇到空白字符,读取终止。
2.读入未知数目string对象:
3.用getline函数读取整行文本:
getline函数接受两个参数:一个输入流对象,一个string对象。getline一次读取一行,遇到换行符停止。行尾的换行符也会读取,但是换行符不会存入string对象中。getline不会忽略行开头的换行符,如果第一个字符就是换行符,那么getline函数也将停止读入并返回,此时string对象被置为空string。
测试下面两个完整的程序对行开头/结尾的空白字符(空格、制表符、换行符)的处理,特别是行开头处的换行符:
程序清单1:
程序清单2:
string对象的操作:
1.成员函数size() 返回string对象中字符的个数,返回类型为string::size_type(与unsigned具有相同含义)。
2.成员函数empty() 测试string对象是否为空,返回bool型。
3.关系运算:== != < <= >= >,比较两个string对象的大小或相等关系,表达式返回的是bool类型。
关系操作符比较两个string对象时采用了和(大小写敏感的)字典排序相同的策略:
·如果两个string对象长度相同,且对应字符相同,那么它们是相等的;
·如果两个string对象长度不同,且短的string对象是长的string对象的前缀,则短的string对象小;
·比较两个string对象出现的第一个不同的字符。
4.赋值操作
可以把一个string对象赋值给另一个string对象,也可以把一个字符串字面值赋值给一个string对象
5.string对象的加法被定义成连接。两个string对象可以通过’+’操作符或”+=”操作符连接成一个string对象。string对象还可以和字符串字面值连接,’+’操作符的两个操作数中至少有一个要是string对象,表达式返回一个string对象。
‘+’操作符两个操作数中有一个是string对象,另一个还可以是单个字符,或数字,数字按ASCII码转换成相应字符。
程序清单3
6.string对象通过[ ]下标操作符访问每个元素,范围是0 - (size() - 1),C++标准库对访问越界不做检查。
C++标准库提供string类型,支持长度可变的字符串。使用时要包含头文件string,还要对名字string做using声明。
#include <string> using std::string;
初始化:string标准库支持几个构造函数,在没有指明对象初始化式时,系统使用默认构造函数。
string s1; 默认构造函数,s1为空串 string s2(s1); 将s2初始化为s1的一个副本 string s3(“value”); 将s3初始化为一个字符串子面值的副本 string s4(n, ‘c’); 将s4初始化为n个字符’c’构成的字符串
输入输出:string对象用标准输入cin读,用标准输出cout写,下面是几种典型实践:
1.用标准输入/输出操作符:>> and <<:
string s; cin >> s; cout << s << endl;
输入操作符>>在读取string类型时:
·读取并忽略开头所有的空白字符(空格、换行符、制表符);
·读取字符直至再次遇到空白字符,读取终止。
2.读入未知数目string对象:
string word; //read until end-of-file,writing each word to a new line. while(cin >> word) cout << word << endl;
3.用getline函数读取整行文本:
string line; //read line at time until end-of-file while(getline(cin, line)) cout << line << endl;
getline函数接受两个参数:一个输入流对象,一个string对象。getline一次读取一行,遇到换行符停止。行尾的换行符也会读取,但是换行符不会存入string对象中。getline不会忽略行开头的换行符,如果第一个字符就是换行符,那么getline函数也将停止读入并返回,此时string对象被置为空string。
测试下面两个完整的程序对行开头/结尾的空白字符(空格、制表符、换行符)的处理,特别是行开头处的换行符:
程序清单1:
#include<iostream> #include<string> // or use “using namespace std;” instead using std::cin; using std::cout; using std::endl; using std::string; int main() { string word; while(cin >> word) cout << "BEGIN-" << word << "-END" << endl; return 0; }
程序清单2:
#include<iostream> #include<string> // or use “using namespace std;” instead using std::cin; using std::cout; using std::endl; using std::string; int main() { string line; while(getline(cin, line)) cout << "BEGIN-" << line << "-END" << endl; return 0; }
string对象的操作:
1.成员函数size() 返回string对象中字符的个数,返回类型为string::size_type(与unsigned具有相同含义)。
2.成员函数empty() 测试string对象是否为空,返回bool型。
string s(“zzy@Library”); cout << s.size() << endl; if(s.empty()) cout << “empty!” << emdl;
3.关系运算:== != < <= >= >,比较两个string对象的大小或相等关系,表达式返回的是bool类型。
关系操作符比较两个string对象时采用了和(大小写敏感的)字典排序相同的策略:
·如果两个string对象长度相同,且对应字符相同,那么它们是相等的;
·如果两个string对象长度不同,且短的string对象是长的string对象的前缀,则短的string对象小;
·比较两个string对象出现的第一个不同的字符。
4.赋值操作
可以把一个string对象赋值给另一个string对象,也可以把一个字符串字面值赋值给一个string对象
string s1,s2; s1 = “zzy @ Library”; s2 = s1;
5.string对象的加法被定义成连接。两个string对象可以通过’+’操作符或”+=”操作符连接成一个string对象。string对象还可以和字符串字面值连接,’+’操作符的两个操作数中至少有一个要是string对象,表达式返回一个string对象。
‘+’操作符两个操作数中有一个是string对象,另一个还可以是单个字符,或数字,数字按ASCII码转换成相应字符。
程序清单3
#include<iostream> #include<string> //or use “using namespace std;” instead using std::cin; using std::cout; using std::endl; using std::string; int main() { string s1 = "zzy", s2 = " @ ", s3 = "Library!\n"; string s4 = s1 + s2 + s3; cout << s4; string s5 = "IF " + s4 + "coding " + "ENDIF"; cout << s5; return 0; }
6.string对象通过[ ]下标操作符访问每个元素,范围是0 - (size() - 1),C++标准库对访问越界不做检查。
string s = "zzy @ Library4D"; for(string::size_type i = 0; i != s.size(); ++i) cout << s[i]; cout << endl; for(int i = -1; i <= 20; ++i) cout << s[i]; cout << endl; for(int i = 0; i < s.size(); ++i) s[i] = '$'; cout << s << endl;
相关文章推荐
- 【C++ Primer每日刷】之三 标准库 string 类型
- 把《c++ primer》读薄(3-1 标准库string类型初探)
- C++基础的不能再基础的学习笔记——标准库类型string
- C++ ->Chapter3 标准库类型之读入未知数目的string 对象
- C++基础编程----2.2标准库类型string
- C++ 标准库 string类型(一)
- C++学习(一)——标准库类型之string全解析
- C++ primer 读书笔记系列——(1)标准库string类型
- C++ 标准库 string类型(三)
- c++ 标准库string类型
- c++ primer学习笔记3-标准库类型string&vector
- C++ 标准库 string类型(二)
- C++ ->Chapter3 标准库类型之string 类型
- c++之标准库类型string
- C/C++学习笔记33:C++中标准库string类型
- C++ Primer 学习笔记(4)——标准库string类型
- 关注C++细节——标准库string类型
- C++中的标准库类型——string
- 【C++ Primer每日刷】之三 标准库 string 类型
- C++ Primer 笔记——标准库类型string