C++ 字符串

C++ 字符串

字符串用于存储文本。

string 字符串变量包含由双引号包围的字符集合:

实例

创建一个 string 变量字符串类型并为其赋值:

  1. string greeting = "Hello";

要使用字符串,必须在源代码中包含一个额外的头文件 <string> 库:

实例
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string greeting = "Hello";
  6. cout << greeting;
  7. return 0;
  8. }

字符串串联

可以在字符串之间使用 + 运算符将它们相加,以生成新字符串。这叫做串联。

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5. string firstName = "John ";
  6. string lastName = "Doe";
  7. string fullName = firstName + lastName;
  8. cout << fullName;
  9. return 0;
  10. }

在上面的实例中,我们在 firstName 之后添加了一个空格,以便在输出上在 John 和 Doe 之间创建一个空格。但是,也可以添加带引号的空格(" "' '):

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5. string firstName = "John";
  6. string lastName = "Doe";
  7. string fullName = firstName + " " + lastName;
  8. cout << fullName;
  9. return 0;
  10. }

Append 方法

C++ 中的字符串实际上是一个对象,它包含可以在字符串上执行某些操作的函数。例如,还可以使用 append() 函数连接字符串。

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5. string firstName = "John ";
  6. string lastName = "Doe";
  7. string fullName = firstName.append(lastName);
  8. cout << fullName;
  9. return 0;
  10. }
使用 + 还是 append() 取决于您。两者之间的主要区别在于 append() 函数的速度要快得多。然而,对于测试等,只使用 +,可能会更容易。

数字和字符串相加

C++ 使用 + 运算符来进行加法和串联运算。

数字被执行加法。而字符串会被串联的。

如果你对两个数字使用 +,结果就是这两个数字执行加法的结果:

  1. #include <iostream>
  2. using namespace std;
  3. int main () {
  4. int x = 10;
  5. int y = 20;
  6. int z = x + y;
  7. cout << z;
  8. return 0;
  9. }

如果两个字符串使用 +,结果将是字符串串联:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5. string x = "10";
  6. string y = "20";
  7. string z = x + y;
  8. cout << z;
  9. return 0;
  10. }

字符串长度

要获取字符串的长度,请使用 length() 函数:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  6. cout << "The length of the txt string is: " << txt.length();
  7. return 0;
  8. }

提示:您可能会看到一些使用 size() 函数获取字符串长度。它只是 length() 的别名。因此是使用 length() 还是 size() 完全由您决定。

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  6. cout << "The length of the txt string is: " << txt.size();
  7. return 0;
  8. }

访问字符串

您可以通过引用方括号 [] 内的索引号来访问字符串中的字符。

本例打印 myString 中的 第一个 字符:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string myString = "Hello";
  6. cout << myString[0];
  7. return 0;
  8. }
注意:字符串索引以 0 开头:[0] 是第一个字符。[1] 是第二个字符,等等。

本例打印 myString 中的 第二个 字符:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string myString = "Hello";
  6. cout << myString[1];
  7. return 0;
  8. }

修改字符串字符

要更改字符串中特定字符的值,请使用索引,并使用单引号:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string myString = "Hello";
  6. myString[0] = 'J';
  7. cout << myString;
  8. return 0;
  9. }

用户输入字符串

可以使用 cin 上的提取运算符 >> 来显示用户输入的字符串

  1. string firstName;
  2. cout << "Type your first name: ";
  3. cin >> firstName; // get user input from the keyboard
  4. cout << "Your name is: " << firstName;
  5. // Type your first name: John
  6. // Your name is: John

但是,cin 将空格(空格、制表符等)视为终止字符,这意味着它只能显示一个单词(即使键入多个单词)

  1. string fullName;
  2. cout << "Type your full name: ";
  3. cin >> fullName;
  4. cout << "Your name is: " << fullName;
  5. // Type your full name: John Doe
  6. // Your name is: John

从上面的例子中,您本来希望程序打印 "John Doe",但它只打印 "John"。

这就是为什么在处理字符串时,我们经常使用 getline() 函数来读取一行文本。它将 cin 作为第一个参数,字符串变量作为第二个参数:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string fullName;
  6. cout << "Type your full name: ";
  7. getline (cin, fullName);
  8. cout << "Your name is: " << fullName;
  9. return 0;
  10. }

字符串命名空间

您可能会看到一些 C++ 程序没有标准命名空间库。using namespace std 行可以省略,并替换为 std 关键字,后跟 string 字符串(和 cout)对象的 :: 运算符:

  1. #include <iostream>
  2. #include <string>
  3. int main() {
  4. std::string greeting = "Hello";
  5. std::cout << greeting;
  6. return 0;
  7. }
是否包含标准名称空间库取决于您。