前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术◈C++核心知识总结(II)—— String类

技术◈C++核心知识总结(II)—— String类

作者头像
leoay
发布2019-12-27 11:10:08
4270
发布2019-12-27 11:10:08
举报
文章被收录于专栏:leoayleoayleoay

本文是leoay的第4篇原创文章

题图:leoay

上一篇文章(链接在这里)我们介绍了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++中常用的类。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 leoay 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档