本文是leoay的第4篇原创文章
上一篇文章(链接在这里)我们介绍了C++中的命名空间的用法,接下来我们介绍第二个话题String类。之前本来打算将这四个话题放在一篇文章中写的,后来写着写着就发现内容有点多,就索性拆分为四篇写吧,这样我写起来不那么累,你们读起来也不那么累。之前给自己定的目标是每篇文章3000+字数,但是写了两篇技术文后觉得技术文还是多用图比较好,少用太多的文字,好了,废话不多说,正题开始。
2、String类型
把书翻遍,把各类文章读遍,觉得String这个没什么好说的,所以暂且简单过一下。
1、C++中的string不同于C中的string
C语言中没有字符串的概念,实际上是字符数组,但是C中有个头文件"string.h",提供了字符数串拼接、拷贝、比较等函数接口。而C++中string是字符串类,在使用时需要包含string头文件,由于string是std命名空间下的类,所以也需要引入std命名空间,下面是示例代码:
#include <string>
using std::string;
2、C++中string对象的定义与初始化
C++中string类提供了多种方式初始化一个字符串对象:
string str1; //默认的初始化,str1是一个空字符串
string str2(str1); //使用拷贝构造函数利用已知字符串初始化
string str21 = str1;
string str2 = ("Hello World!");
string str3("HelloWorld");
3、C++ string 对象的操作符(以字符串s为例)
os << s //将s写到输出流os中
is >> s //将输入流写到s中
getline(is, s) //从is中读取一行到s中
s.empty() //判断字符串s是否空
s.size() //获取字符串s的大小
s1 == s2 //比较字符串s1是否等于字符串s2
s1 + s2 //将字符串s1和s2拼接成一个新额字符串
从命令行读取输入,存到字符串:
#include <iostream>
int main()
{
std::string line;
while (getline(cin, line))
if (line.size() > 1024)
cout << line << endl;
return 0;
}
4、C++ string 中字符的处理方法
C++中string是一个类,能够创建字符串对象,而字符串是由一个个字符组成,那么有没有操作字符的方式呢?
当然有!我们可以判断字符串中是否有空格,也可以改变字符串中字符的大小写等。
这些操作都定义在头文件"cctype"中
下面简单罗列几个cctype中定义的一些string中操作字符串的方法:
isalnum(c) //判断字符c是否是字母或数字
isalpha(c) //判断字符c是否是一个字母
iscntrl(c) //判断c是否是一个控制字符
isdigit(c) //判断c是否是一个数字
isspace(c) //判断c是否是一个空格 等价于 c == '
注意这里的"cctype"就是C++中使用C标准的头文件的写法,等价于"ctype.h"
除此之外,我们也可以使用范围for对字符串中的字符进行遍历。
比如:
//遍历字符串,将所有字符转为大写字母
#include <iostream>
#include <cctype>
int main()
{
std::string str("Hello World!");
for (auto &c : str)
c = toupper(c);
return 0;
}
OK, string类就写到这里,下篇文章我们学一下vector这个C++中常用的类。