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++以上定义字符串内存中表示:

String Presentation in 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++支持多种操纵空值终止字符串的函数:

S.N.功能及用途1strcpy(s1, s2);
复制字符串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
原创粉丝点击