C++ Strings

字符串是字符的集合。C++ 中常用的字符串有两种:


C-strings

在 C 编程中,字符集合以数组的形式存储。C++ 编程也支持这一点。因此,它被称为 C-strings。

C-strings 是以 null 字符(即 \0,null 字符的 ASCII 值为 **0**)结尾的 `char` 类型数组。


如何定义 C-string?

char str[] = "C++";

在上面的代码中,`str` 是一个字符串,它包含 **4** 个字符。

虽然 `"C++"` 包含三个字符,但字符串末尾会自动添加 null 字符 `\0`。


定义字符串的其他方法

char str[4] = "C++";
     
char str[] = {'C','+','+','\0'};

char str[4] = {'C','+','+','\0'};

与数组一样,不一定需要使用为字符串分配的所有空间。例如:

char str[100] = "C++";

示例 1:C++ 字符串读取单词

C++ 程序显示用户输入的字符串。

#include <iostream>
using namespace std;

int main()
{
    char str[100];

    cout << "Enter a string: ";
    cin >> str;
    cout << "You entered: " << str << endl;

    cout << "\nEnter another string: ";
    cin >> str;
    cout << "You entered: " << str << endl;

    return 0;
}

输出

Enter a string: C++
You entered: C++

Enter another string: Programming is fun.
You entered: Programming

请注意,在第二个示例中,只显示了 `"Programming"` 而不是 `"Programming is fun"`。

这是因为提取运算符 `>>` 的作用类似于 C 中的 `scanf()`,并将空格 `" "` 视为终止符。


示例 2:C++ 字符串读取一整行文本

C++ 程序读取并显示用户输入的整行文本。

#include <iostream>
using namespace std;

int main()
{
    char str[100];
    cout << "Enter a string: ";
    cin.get(str, 100);

    cout << "You entered: " << str << endl;
    return 0;
}

输出

Enter a string: Programming is fun.
You entered: Programming is fun.

要读取包含空格的文本,可以使用 `cin.get` 函数。该函数接受两个参数。

第一个参数是字符串的名称(字符串第一个元素的地址),第二个参数是数组的最大大小。

在上面的程序中,`str` 是字符串的名称,`100` 是数组的最大大小。


String Object

在 C++ 中,您还可以创建用于存储字符串的字符串对象。

与使用 `char` 数组不同,字符串对象没有固定长度,可以根据您的需要进行扩展。


示例 3:使用 string 数据类型的 C++ 字符串

#include <iostream>
using namespace std;

int main()
{
    // Declaring a string object
    string str;
    cout << "Enter a string: ";
    getline(cin, str);

    cout << "You entered: " << str << endl;
    return 0;
}

输出

Enter a string: Programming is fun.
You entered: Programming is fun.

在此程序中,声明了一个字符串 `str`。然后,向用户询问字符串。

您可以使用 `getline()` 函数获取输入的整行文本,而不是使用 `cin >>` 或 `cin.get()` 函数。

`getline()` 函数将输入流(即 `cin`)作为第一个参数,将要存储行的位置(`str`)作为第二个参数。


将字符串传递给函数

将字符串传递给函数的方式与将数组传递给函数的方式类似。

#include <iostream>

using namespace std;

void display(char *);
void display(string);

int main()
{
    string str1;
    char str[100];

    cout << "Enter a string: ";
    getline(cin, str1);

    cout << "Enter another string: ";
    cin.get(str, 100, '\n');

    display(str1);
    display(str);
    return 0;
}

void display(char s[])
{
    cout << "Entered char array is: " << s << endl;
}

void display(string s)
{
    cout << "Entered string is: " << s << endl;
}

输出

Enter a string:  Programming is fun.
Enter another string:  Really?
Entered string is: Programming is fun.
Entered char array is: Really?

在上面的程序中,要求用户输入两个字符串。它们分别存储在 `str` 和 `str1` 中,其中 `str` 是 `char` 数组,`str1` 是 `string` 对象。

然后,我们有两个 `display()` 函数,它们将字符串输出到屏幕。

两个函数之间的唯一区别在于参数。

第一个 `display()` 函数接受 `char` 数组作为参数,而第二个函数接受 `string` 对象作为参数。

这个过程称为函数重载。了解更多关于函数重载的信息。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战