亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++字符串完全指南:C风格字符串 vs std::string 类

C++提供两种字符串表示:

C风格字符串

本质是以空字符\0结尾的单维字符数组。字符串内容后跟一个\0,故数组长度比字符数多1。定义初始化:

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

利用数组初始化规则可简写:

char greeting[] = "Hello"; // 编译器自动在末尾添加\0

内存布局:C++字符串完全指南:C风格字符串 vs std::string 类

打印示例:

#include <iostream>
using namespace std;
int main() {
    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
    cout << "Greeting message: " << greeting << endl;
    return 0;
}

输出:Greeting message: Hello

常用C字符串函数(需<cstring>)

序号函数与功能
1

strcpy(s1, s2)

复制s2到s1。

2

strcat(s1, s2)

将s2追加到s1末尾。

3

strlen(s1)

返回s1长度(不含\0)。

4

strcmp(s1, s2)

比较:相等返回0,s1<s2返回负,s1>s2返回正。

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;
    strcpy(str3, str1);
    cout << "strcpy(str3, str1) : " << str3 << endl;
    strcat(str1, str2);
    cout << "strcat(str1, str2) : " << str1 << endl;
    len = strlen(str1);
    cout << "strlen(str1) : " << len << endl;
    return 0;
}

输出:strcpy: Hello、strcat: HelloWorld、strlen: 10

C++ string类

标准库<string>提供string类,涵盖上述所有操作且更安全、功能更丰富。示例:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str1 = "Hello";
    string str2 = "World";
    string str3;
    int len;
    str3 = str1;           // 赋值拷贝
    cout << "str3 : " << str3 << endl;
    str3 = str1 + str2;    // 运算符重载拼接
    cout << "str1 + str2 : " << str3 << endl;
    len = str3.size();     // 成员函数获取长度
    cout << "str3.size() : " << len << endl;
    return 0;
}

输出:str3: Hello、str1+str2: HelloWorld、size: 10

推荐:现代C++优先使用std::string,避免缓冲区溢出、内存管理等C风格字符串痛点。

C语言

  1. 掌握 C# 字符串:基础、操作与进阶技巧完全指南
  2. 掌握 C++ 运算符:六大类型全解析与实战示例
  3. C++ 注释最佳实践:编写可读、可维护代码的注释艺术
  4. C++ 类模板实战指南:编写灵活的类型无关代码
  5. C++ 变量与数据类型全解析:int、double、char、string、bool 详细指南
  6. C++ 字符串函数实战:strcpy、strcat、strlen、strcmp 详解与示例
  7. C 语言字符串完全指南:声明、输入输出与库函数详解
  8. C++编程语言:核心特性全景解析
  9. C++常量与字面量完全手册:类型、语法与最佳实践
  10. 精通 Java 字符串:创建、方法与最佳实践
  11. 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
  12. Java Strings 类:掌握字符串创建与操作