位置:首页 > 高级语言 > C++在线教程 > C++字符串

C++字符串

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. 功能及用途
1 strcpy(s1, s2);
复制字符串s2到字符串s1
2 strcat(s1, s2);
连接字符串s2到字符串s1的末尾
3 strlen(s1);
返回字符串s1的长度
4 strcmp(s1, s2);
返回值为0,s1和s2是相同的; 如果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[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) : Hello
strcat( str1, str2): HelloWorld
strlen(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 : Hello
str1 + str2 : HelloWorld
str3.size() :  10