💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# C++ 字符串 > 原文: [https://www.programiz.com/cpp-programming/strings](https://www.programiz.com/cpp-programming/strings) #### 在本文中,您将学习如何在 C 中处理字符串。您将学习声明它们,对其进行初始化以及将它们用于各种输入/输出操作。 字符串是字符的集合。 C++ 编程语言中通常使用两种类型的字符串: * 作为字符串类(标准 C++ 库字符串类)的对象的字符串 * C 字符串(C 样式的字符串) * * * ## C 字符串 在 C 编程中,字符集合以数组形式存储,C++ 编程也支持这种形式。 因此,它称为 C 字符串。 C 字符串是`char`类型的数组,以空字符(即`\0`)终止(空字符的 ASCII 值为 0)。 * * * ### 如何定义一个 C 字符串? ```cpp char str[] = "C++"; ``` 在上面的代码中,`str`是一个字符串,包含 4 个字符。 虽然`"C++"`具有 3 个字符,但空字符`\0`会自动添加到字符串的末尾。 * * * ### 定义字符串的替代方法 ```cpp char str[4] = "C++"; char str[] = {'C','+','+','\0'}; char str[4] = {'C','+','+','\0'}; ``` 像数组一样,不必使用为字符串分配的所有空间。 例如: ```cpp char str[100] = "C++"; ``` * * * ### 示例 1:使用 C++ 字符串读取单词 **C++ 程序,用于显示用户输入的字符串。** ```cpp #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; } ``` **输出** ```cpp 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++ 程序,用于读取和显示用户输入的整行。** ```cpp #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; } ``` **输出** ```cpp Enter a string: Programming is fun. You entered: Programming is fun. ``` 要读取包含空格的文本,可以使用`cin.get`函数。 该函数有两个参数。 第一个参数是字符串的名称(字符串的第一个元素的地址),第二个参数是数组的最大大小。 在上面的程序中,`str`是字符串的名称,`100`是数组的最大大小。 * * * ## 字符串对象 在 C++ 中,您还可以创建一个用于保存字符串的字符串对象。 与使用`char`数组不同,字符串对象没有固定的长度,可以根据需要进行扩展。 * * * ### 示例 3:使用字符串数据类型的 C++ 字符串 ```cpp #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; } ``` **输出** ```cpp Enter a string: Programming is fun. You entered: Programming is fun. ``` 在该程序中,声明了字符串`str`。 然后从用户询问字符串。 除了使用`cin>>`或`cin.get()`函数外,您还可以使用`getline()`获得输入的文本行。 `getline()`函数将输入流作为第一个参数,即`cin`和`str`作为要存储的行的位置。 * * * ## 将字符串传递给函数 字符串以类似的方式传递给函数[数组也传递给函数](/cpp-programming/passing-arrays-function "Passing array to a function in C++")。 ```cpp #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; } ``` **输出** ```cpp 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`作为参数。 此过程称为函数重载。 了解有关[函数重载](/cpp-programming/function-overloading "C++ Function overloading")的更多信息。