C++ 字符串
C++ 提供了以下两种类型的字符串表示形式:
C 风格字符串
C++ 引入的 string 类类型
C 风格字符串
C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

下面的声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 RUNOOB 的字符数多一个。

char site[7] = {‘R’, ‘U’, ‘N’, ‘O’, ‘O’, ‘B’, ‘\0’};
依据数组初始化规则,您可以把上面的语句写成以下语句:

char site[] = “RUNOOB”;
以下是 C/C++ 中定义的字符串的内存表示:

C/C++ 中的字符串表示
其实,您不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。让我们尝试输出上面的字符串:

实例
#include <iostream>using namespace std;int main ()
{char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};cout << "11: ";cout << site << endl;return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

11: RUNOOB
C++ 中有大量的函数用来操作以 null 结尾的字符串:

序号 函数 & 目的
1 strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
2 strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号,例如:
string str1 = “runoob”;
string str2 = “google”;
string str = str1 + str2;
3 strlen(s1);
返回字符串 s1 的长度。
4 strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
5 strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6 strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
下面的实例使用了上述的一些函数:

实例
#include <iostream>
#include <cstring>using namespace std;int main ()
{char str1[13] = "runoob";char str2[13] = "google";char str3[13];int  len ;// 复制 str1 到 str3strcpy( str3, str1);cout << "strcpy( str3, str1) : " << str3 << endl;// 连接 str1 和 str2strcat( str1, str2);cout << "strcat( str1, str2): " << str1 << endl;// 连接后,str1 的总长度len = strlen(str1);cout << "strlen(str1) : " << len << endl;return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

strcpy( str3, str1) : runoob
strcat( str1, str2): runoobgoogle
strlen(str1) : 12

C++ 中的 String 类
C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。我们将学习 C++ 标准库中的这个类,现在让我们先来看看下面这个实例:

现在您可能还无法透彻地理解这个实例,因为到目前为止我们还没有讨论类和对象。所以现在您可以只是粗略地看下这个实例,等理解了面向对象的概念之后再回头来理解这个实例。


实例
#include <iostream>
#include <string>using namespace std;int main ()
{string str1 = "runoob";string str2 = "google";string str3;int  len ;// 复制 str1 到 str3str3 = str1;cout << "str3 : " << str3 << endl;// 连接 str1 和 str2str3 = str1 + str2;cout << "str1 + str2 : " << str3 << endl;// 连接后,str3 的总长度len = str3.size();cout << "str3.size() :  " << len << endl;return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

str3 : runoob
str1 + str2 : runoobgoogle
str3.size() :  12

C++基础教程之字符串相关推荐

  1. c 语言 字符 r,R语言基础教程之字符串

    原标题:R语言基础教程之字符串 在R中的单引号或双引号中写入的任何值都将被视为字符串.在R内部将每个字符串存储在双引号内,即使您使用单引号创建它们. 适用于字符串构造的规则 字符串开头和结尾的引号应为 ...

  2. C语言基础教程 之 字符串

    C语言基础教程目录:https://blog.csdn.net/SparkLee2013/article/details/85229406 1.'x'和"x" 'x'是字符常量,而 ...

  3. Python基础教程:字符串中split与rsplit的方法原理教程

    1.描述 split()方法通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串,默认分隔符为所有空字符,包括空格.换行(\n).制表符(\t)等 rstrip()方法通 ...

  4. python 基础教程:字符串内建函数之大小写的区别

    假设有一个字符串s = "hello,world",如何对字符串进行大小写的更改? 1,将字符串的首字母改为大写: msg = s.capitalize() print(msg) ...

  5. Python基础教程:字符串的常用操作

    在Python中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a = 'abc' b= "abc" c = '''abc''' d = " ...

  6. bigdecimal比较是否相等_java基础教程之字符串的介绍,比较重要的一个知识点【四】...

    1.判断字符串的开始与结尾 startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束.这两个方法的返回值都为boolean类型. startsWith()方法 ...

  7. java substring截取字符串_java基础教程之字符串的介绍,比较重要的一个知识点【下】...

    字符串操作 1.获取子字符串 通过String类的substring()方法可对字符串进行截取.这些方法的共同点就是都是利用字符串的下标进行截取.应明确字符串下标是从0开始的. substring() ...

  8. python 字符串替换_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  9. python print 输出到txt_(Python基础教程之七)Python字符串操作

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

最新文章

  1. 主角有智能芯片的种田小说_推荐3本克苏鲁类小说,压抑邪恶与搞笑逗乐并存,看看是你的菜吗...
  2. AT2362 [AGC012B] Splatter Painting(思维、dfs染色、剪枝)
  3. cygwin中写c语言程序,在windows下怎么利用Cygwin进行编程
  4. 菜鸟配置SAMBA服务之4
  5. jquery的attr和prop区别之实例
  6. AI基础:简易数学入门
  7. Tomcat中的零停机部署(和回滚); 演练和清单
  8. [剑指offer]面试题第[52]题[Leedcode][第160题][JAVA][相交链表][双指针]
  9. vue使用js-cookie写入获取不到_Vue 面向对象 - 实战 - 内容管理系统(五)
  10. 工作几年只会增删改查怎么了,大神们都是从第一行代码开始的!
  11. python多线程抢票_抢票 抢票 抢票!Python大牛带你实现12306全自动抢票
  12. 嵌入式开发 | 嵌入式开发设计文档该怎么写?
  13. 机械CAD中如何设置重叠图形消隐?
  14. phpnow php升级,phpnow如何升级php版本
  15. 【OPENCV】运行opencv时找不到Qt库
  16. opencv学习之视频帧率
  17. 如何批量删除pdf中的批注
  18. 乐观数据:企业抖音蓝V账号获取流量运营的四个技巧
  19. 【Python】基于机器学习的财务数据分析——识别财务造假
  20. 转行3D游戏模型师,你了解次世代模型吗?

热门文章

  1. [转载] Python与其他语言结合的参数转换函数PyArg_ParseTuple()
  2. [转帖]规模化敏捷-简要对比SAFe、LeSS和DAD模式
  3. 基本运算符中Swift和Java的比较
  4. BZOJ3678: wangxz与OJ
  5. ubuntu14.04 截图
  6. 【Java】函数使用
  7. mysql Substr与char_length函数的应用
  8. java开发flex_FLEX+Java开发
  9. 连发生成工具_Win10菜单习惯吗?快看吧,Win10快速切换成Win7菜单就这么简单
  10. android scalex中心,androidmatrix android怎么算matrix中心点