【共读Primer】15.<3.2> 标准库st…
2018-08-10 11:12:00来源:博客园 阅读 ()
标准库string 其具体代表的类型为可变长的字符序列。
使用string时需要包含以下代码:
#include <string> // 包含头文件 using std::string // 进行using声明,可以免去每个string前std::的书写
初始化string对象
1 string s1; // 默认初始化,s1是 2 string s2 = s1; // s2是s1的副本 3 string s3 = "Value"; // s3是该字符串字面值的副本 4 string s4(10,'c'); // s4的内容是 cccccccccc 10个c 5 string s5("Value"); // s5是字面值"value"的副本,除了字面值最后的那个空字符外
大家是否注意到 s3和s5的值是一样的,但是写法却不一样。
这两个初始化的方式从结果上讲没有区别,
有区别的是初始化的过程: s3的写法叫做拷贝初始化,s5的写法叫做直接初始化。
他们的区别是 s3要经过一个默认初始化过程,而s5则不会经过这个过程
一 string的常用操作
1. 输入输出操作
// 输入、输出操作 比如:输入“ Hello World!” 输出结果将会是 Hello string s; // 空字符串 cin >> s; // 将string对象读入s,遇到空白停止 cout << s << endl; // 输出s
这里需要注意的是,输入操作将会在第一个非空字符开始,到下一个空字符结束
2. 读取整行
// 读取整行操作 string line; // 每次读入一整行,直至到达文件末尾 while(getline(cin,line)) { cout << line << endl; }
3. empty和size
// 读取整行操作 string line; // 每次读入一整行,直至到达文件末尾 while(getline(cin,line)) { if(!line.empty()) // 判断当字符串不为空时执行 {// 输出字符数量和字符串 cout << "char number("<<line.size() << "):"<< line << endl; } }
关于size_type类型
string.size()的返回值类型是size_type类型。
这个类型的底层会根据系统及编译器的不同可能发生改变。
但是不变的是这个类型是一个无符号类型,不要与带符号的类型进行混合计算。
详细原因参见改地址:https://www.cnblogs.com/ChattyKu/p/9410757.html
3. string对象的比较
(1)如果字符的位对应上完全相同,则长度较小的字符串较小
(2)未对应不同则比较第一个不同位的编码大小
string str = "Hello"; string phrase = "Hello World"; string slang = "Hiya"; // str < phrase 根据1判断 // slang > str > phrase 根据规则2
4.两个string对象相加
string add = str + phrase; string addAll = str + add + phrase + slang;
二 处理string中的字符
对字符的处理函数
// isalnum(c) 当c是字母或数字时为真 // isalpha(c) 当c是字母时为真 // iscntrl(c) 当c是控制字符时为真 // isdigit(c) 当c为数字时为真 // isgraph(c) 当c不是空格但可打印时为真 // islower(c) 当c是小写字母时为真 // isprint(c) 当c是可打印字符时为真 // ispunct(c) 当c是标点符号时为真 // isspace(c) 当c是空白时为真 // isupper(c) 当c是大写字母是为真 // isxdigit(c) 当c是十六进制数字时为真 // tolower(c) 如果c是大写字母,输出对应的小写字母:否则原样输出c // toupper(c) 如果c是小写字母,输出对应的大写字母:否则远洋输出c
//基于范围的for语句
for(auto c : addAll)
{
cout << c << endl;
}
// 基于下标的for语句
for(int i = 0; i < addAll.length(); ++i)
{
cout << addAll[i] << endl;
}
贴出全部代码,可用于直接编译
1 #include <iostream> 2 #include <string> 3 using std::string; 4 using std::cin; 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 string s1; // 默认初始化,s1是 11 string s2 = s1; // s2是s1的副本 12 string s3 = "hiya"; // s3是该字符串字面值的副本 13 string s4(10,'c'); // s4的内容是 cccccccccc 10个c 14 string s5("Value"); // s5是字面值"value"的副本,除了字面值最后的那个空字符外 15 16 // 输入、输出操作 17 string s; // 空字符串 18 cin >> s; // 将string对象读入s,遇到空白停止 19 cout << s << endl; // 输出s 20 21 // 读取整行操作 22 string line; 23 // 每次读入一整行,直至到达文件末尾 24 while(getline(cin,line)) 25 { 26 if(!line.empty()) // 判断当字符串不为空时执行 27 {// 输出字符数量和字符串 28 cout << "char number("<<line.size() << "):"<< line << endl; 29 } 30 } 31 32 string str = "Hello"; 33 string phrase = "Hello World"; 34 string slang = "Hiya"; 35 // str < phrase 根据1判断 36 // slang > str > phrase 根据规则2 37 38 string add = str + phrase; 39 string addAll = str + add + phrase + slang; 40 41 // isalnum(c) 当c是字母或数字时为真 42 // isalpha(c) 当c是字母时为真 43 // iscntrl(c) 当c是控制字符时为真 44 // isdigit(c) 当c为数字时为真 45 // isgraph(c) 当c不是空格但可打印时为真 46 // islower(c) 当c是小写字母时为真 47 // isprint(c) 当c是可打印字符时为真 48 // ispunct(c) 当c是标点符号时为真 49 // isspace(c) 当c是空白时为真 50 // isupper(c) 当c是大写字母是为真 51 // isxdigit(c) 当c是十六进制数字时为真 52 // tolower(c) 如果c是大写字母,输出对应的小写字母:否则原样输出c 53 // toupper(c) 如果c是小写字母,输出对应的大写字母:否则远洋输出c 54 55 //基于范围的for语句 56 for(auto c : addAll) 57 { 58 cout << c << endl; 59 } 60 // 基于下标的for语句 61 for(int i = 0; i < addAll.length(); ++i) 62 { 63 cout << addAll[i] << endl; 64 } 65 66 67 }
string的使用比较多,并且使用频率很高。
所以对string的具体操作函数上还是需要多熟悉。
关于下标操作再说一点,一定保证不要越界
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ Primer抄书笔记(二)——变量和基本类型(下) 2020-02-25
- C++ Primer 抄书笔记(二)——变量和基本类型(上) 2020-02-24
- C++ Primer 抄书笔记(一) 2020-02-20
- 【c++primer练习】 typedef与指针、常量和类型别名 2019-11-18
- C++ Primer练习题day2 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash