本文最后更新于 2024-11-28,文章内容可能已经过时。

C++ 中的字符串处理是一个非常重要的主题,它提供了多种方式来处理文本数据。在 C++ 中,有两种主要的方式来表示字符串:C 风格字符串和 std::string 类型。

std::string 类。要使用 std::string,首先需要包含 <string> 头文件。

一、创建字符串

1、使用字面量初始化

std::string s1 = "Hello, VC++!";

2、构造函数初始化

std::string s2(10, 'C'); // 创建一个包含10个'C'的字符串

3、常用方法

  • 获取长度size()length()
  • 访问元素operator[]at() (后者会进行边界检查)
  • 连接字符串+ 运算符或 append()
  • 比较字符串==, !=, <, >, <=, >=
  • 查找子串find()
  • 替换内容replace()
  • 插入内容insert()
  • 删除内容erase()
#include <iostream>
#include <string>

int main() {
    std::string greeting = "Hello, ";
    std::string name = "vc++!";

    // 连接字符串
    std::string message = greeting + name;
    message += "!";  // 使用 += 添加更多内容

    // 输出整个字符串
    std::cout << message << std::endl;

    // 访问特定位置的字符
    char firstChar = message[0];
    std::cout << "First character: " << firstChar << std::endl;

    // 查找子串的位置
    size_t pos = message.find("vc");
    if (pos != std::string::npos) {
        std::cout << "Found 'vc' at position: " << pos << std::endl;
    }
    return 0;
}
Hello, vc++!!
First character: H
Found 'vc' at position: 7

二、转义字符

作用:用来表示一些不能显示出来的ASCII字符

转义字符含义ASCII码值(十进制)
\a警报007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF),将当前位置移到下一行开头010
\r回车(CR),将当前位置移到本行开头013
\t水平制表(HT)(跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符"\"092
'代表一个单引号(撇号)字符039
"代表一个双引号字符034
?代表一个问号063
\0空字符(Null character)000
\ddd8进制转义字符,d范围0~73位8进制
\xhh16进制转义字符,h范围0~9,a~f,A~F3位16进制
int main() {
    cout << "\\" << endl;
    cout << "\tHello" << endl;
    cout << "\n" << endl;
    return 0;
}
\
	Hello


三、字符串型

作用:用于表示一串字符

  • C风格字符串。C 风格字符串实际上是字符数组,以空字符 \0 结尾。这种类型的字符串直接继承自 C 语言,并且在 C++ 中依然可用。使用 C 风格字符串时需要注意手动管理内存以及确保字符串是以 \0 结束的。

    int main() {
        char str[] = "hello C++";
        printf("%s\n", str);
        return 0;
    }
    
  • C++风格字符串(需要加入头文件#include<string>)。std::string 是 C++ 标准库中提供的一个类,用于更方便地操作字符串。这个类封装了许多常用的字符串操作函数,如查找、替换、追加等,并自动管理内存分配,使得开发者可以更加专注于逻辑实现而不是内存管理。

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string str = "hello c++!";
        cout << str << endl;
        return 0;
    }
    

四、数据的输入

作用:用于从键盘获取数据

#include <iostream>
#include <string>
using namespace std;

int main() {
    //字符串型输入
    string str;
    cout << "请输入字符串型变量:" << endl;
    cin >> str;
    cout << str << endl;
    return 0;
}

总结

对于现代 C++ 编程来说,推荐使用 std::string 类来进行字符串处理,因为它提供了更高级的功能和更好的安全性。然而,在某些情况下,比如与 C 库函数接口交互时,可能仍然需要用到 C 风格字符串。