吴裕雄--天生自然C++语言学习笔记:C++ 字符串
C++ 提供了以下两种类型的字符串表示形式:
C 风格字符串
C++ 引入的 string 类类型
C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。
下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。
char greeting[] = {'H', 'e', 'l', 'l', 'o', '\0'};
依据数组初始化规则,可以把上面的语句写成以下语句:
char greeting[] = "Hello";
C/C++ 中定义的字符串的内存表示:

其实,不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 '\0' 放在字符串的末尾。
#include <iostream> using namespace std; int main ()
{
char greeting[] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: ";
cout << greeting << endl; return ;
}
当上面的代码被编译和执行时,它会产生下列结果: Greeting message: Hello
C++ 中有大量的函数用来操作以 null 结尾的字符串
strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。
strlen(s1);
返回字符串 s1 的长度。
strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 ;如果 s1<s2 则返回值小于 ;如果 s1>s2 则返回值大于 。
strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
#include <iostream>
#include <cstring> using namespace std; int main ()
{
char str1[] = "Hello";
char str2[] = "World";
char str3[];
int len ; // 复制 str1 到 str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl; // 连接 str1 和 str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl; // 连接后,str1 的总长度
len = strlen(str1);
cout << "strlen(str1) : " << len << endl; return ;
}
C++ 中的 String 类
#include <iostream>
#include <string> using namespace std; int main ()
{
string str1 = "Hello";
string str2 = "World";
string str3;
int len ; // 复制 str1 到 str3
str3 = str1;
cout << "str3 : " << str3 << endl; // 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl; // 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl; return ;
}
当上面的代码被编译和执行时,它会产生下列结果:
str3 : Hello
str1 + str2 : HelloWorld
str3.size() :
吴裕雄--天生自然C++语言学习笔记:C++ 字符串的更多相关文章
- 吴裕雄--天生自然C++语言学习笔记:C++ 标准库
C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 动态内存
栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存. 可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址.这种运 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 类 & 对象
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型. 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法.类中的 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 日期 & 时间
C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件. 有四 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 基本语法
C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互. 对象 - 对象具有状态和行为.例如:一只狗的状态 - 颜色.名称.品种,行为 - 摇动.叫唤.吃.对象是类的实例. 类 - 类可 ...
- 吴裕雄--天生自然C++语言学习笔记:C++简介
C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 年在贝尔实验室开始设计开发的.C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言.C++ 可运行于多种平台上,如 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 实例
C++ 实例 - 输出 "Hello, World!" #include <iostream> using namespace std; int main() { co ...
- 吴裕雄--天生自然C++语言学习笔记:C++ STL 教程
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ Web 编程
什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的. CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下: 公共网关接 ...
随机推荐
- 为什么在/etc/profile中设定的环境变量,对子进程可见
系统启动时有个过程是启动初始shell,执行一些固定目录下的脚本,比如/etc/profile.....(系统启动时执行一次),我们在这些文件中添加并导出环境变量 这样shell启动的其它的进程就具备 ...
- C#中SqlDataAdapter的使用小结---转载
C#中SqlDataAdapter的使用小结 转载 叁木-Neil 最后发布于2018-06-07 21:29:39 阅读数 8275 收藏 展开 SqlDataAdapter对象 一.特点介绍1.表 ...
- 【剑指Offer面试编程题】题目1504:把数组排成最小的数--九度OJ
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 输入: 输 ...
- 【剑指Offer面试编程题】题目1511:从尾到头打印链表--九度OJ
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类 ...
- idea中的Storm1.1.1工程自定义日志级别
在idea中跑storm工程时,因为Storm中的日志级级别默认为INFO,控制台总是打印出很多没用的INFO级别的日志,导致我自己在代码中的sout内容看不清楚. 于是想着自定义日志的打印级别为WA ...
- Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库
一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. ...
- jmeter之Xpath提取器
首先创建线程组,添加http请求,具体的设置如图1所示: 图1 然后,再添加后置处理器中的XPath Extractor,具体的参数设置,以及表达式如图2: 图2 可以添加Debug PostProc ...
- java多条件查询SQL语句拼接的小技巧
问题: 一个界面有个多个文本框输入值(或下拉框)展示的查询条件,也就是组合条件查询,需要在java里面动态拼接SQL,where条件如何写? 解决思路: 在where关键字后面固定写 1=1, 若还有 ...
- 小程序列表循环出来的list是不同接口赋的值
需求:首页有三个列表,样式形式都是一样的,可以循环展示,但是循环的内容list部分是来自于不同的三个接口. data: { indexList:[{ name: "中考体能突击营" ...
- 我的Grunt之旅-初识gruntfile文件
时间:2018-03-06 18:23 事件:配置 gruntfile.js文件 首先,回忆一下之前的点,grunt项目下面必须有两个文件 ,第一个 package.json ,第二个 Gru ...