c++学习笔记(八):C++字符串
来源:互联网 发布:工业企业 人工智能 编辑:程序博客网 时间:2024/06/03 12:05
C++提供了以下两种类型表示字符串:
C风格的字符串
用标准C++引入了string类类型
C风格的字符串:
C语言风格的字符串源自C语言中,并继续在C++中支持。字符串实际上是一个一维是由一个空字符'\0'终止字符数组。因此,一个空值终止字符串包含包括字符串后跟空字符。
下面的声明和初始化创建由单词“Hello”的字符串。要在数组的末尾持有空字符,包含字符串的字符数组的大小小于字符在字的数量多了一个“Hello”。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
如果按照数组初始化的规则,那么可以写上述声明如下:
char greeting[] = "Hello";
以下是在C / C++以上定义字符串内存中表示:
其实,不要把空字符的字符串常量的结尾。 C++编译器自动将'\0'加在字符串的结尾,当它初始化数组。让我们尝试打印上面提到的字符串:
#include <iostream>using namespace std;int main (){ char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: "; cout << greeting << endl; return 0;}
当上述代码被编译和执行时,它会产生导致一些如下:
Greeting message: Hello
C++支持多种操纵空值终止字符串的函数:
复制字符串s2到字符串s12strcat(s1, s2);
连接字符串s2到字符串s1的末尾3strlen(s1);
返回字符串s1的长度4strcmp(s1, s2);
返回值为0,s1和s2是相同的; 如果s1<s2返回小于0;如果s1>s2 返回大于05strchr(s1, ch);
返回一个指针,指向字符串s1中第一次出现字符ch6strstr(s1, s2);
返回一个指针,指向字符串s1中第一次出现的字符串s2
下面的例子使用小部分上述功能:
#include <iostream>#include <cstring>using namespace std;int main (){ char str1[10] = "Hello"; char str2[10] = "World"; char str3[10]; int len ; // copy str1 into str3 strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // concatenates str1 and str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // total lenghth of str1 after concatenation len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0;}
当上述代码被编译和执行时,它会产生导致一些如下:
strcpy( str3, str1) : Hellostrcat( str1, str2): HelloWorldstrlen(str1) : 10
C++的String类:
标准C++库提供了支持上述所有操作字符串类的类型,另外更多的功能。我们将C++标准库中学习,但现在让我们先来看看下面的例子:
在这一点上,你可能不理解这个例子,因为到目前为止,我们还没有讨论类和对象。不过可以继续,直到你有认识上面的面向对象的概念。
#include <iostream>#include <string>using namespace std;int main (){ string str1 = "Hello"; string str2 = "World"; string str3; int len ; // copy str1 into str3 str3 = str1; cout << "str3 : " << str3 << endl; // concatenates str1 and str2 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // total lenghth of str3 after concatenation len = str3.size(); cout << "str3.size() : " << len << endl; return 0;}
当上述代码被编译和执行时,它会产生导致一些如下:
str3 : Hellostr1 + str2 : HelloWorldstr3.size() : 10
0 0
- c语言学习笔记八
- C语言学习笔记<八>
- C语言学习笔记(八)--数组
- 《Effective C++》学习笔记(八)
- C语言程序学习(八)笔记
- C学习笔记之---八皇后算法
- C string 字符串 学习笔记
- Object-C 学习笔记(八)---面相对象(继承)
- 【黑马程序员】C语言学习笔记之函数(八)
- C语言学习笔记(八) -宏定义 Macro Definition
- Objective-C基础学习笔记(八)-内存管理
- 黑马程序员——Objective-C学习笔记(八): 属性
- C语言学习笔记(八)——其他计算机知识
- Objective-C学习笔记八:类的定义二
- C学习笔记(八)野指针详解
- 【C++】学习笔记八——共用体
- C/C++学习笔记八(断言与异常处理)
- C/C++学习笔记:指针与字符串
- 英语和计算机程序的转换
- Axure使用心得体会
- poj 1007 DNA Sorting(STL运用)
- 如何配置 outlook 企业邮箱
- delphi-采用内存流将ListView数据导出为Excel文件(未装office可用)
- c++学习笔记(八):C++字符串
- Hibernate中,One2One映射关系的XML实现方式
- 2.编写简单的安全性配置
- AndroidStudio简单常用快捷键
- 普通类,抽象类,接口
- linux配置jdk环境
- [libevent]evsignal_init()
- CodeForces 580B Kefa and Company <贪心>
- NSNotification线程管理以及自动注销开源方案