XZ Blog XZ Blog
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xzhouzeng

@渐行。
首页
  • 人体姿态估计
  • 2D-3D-Lifting
  • 动作质量评估
  • 基于RGBD视觉信息的异常行为识别
  • 基于RGB视频的行为识别
  • 大模型应用
  • 网络结构

    • Transformer
    • GCN
    • Graph Transformers
    • Diffusion Model
  • 深度学习
  • 论文解读
  • 后端开发
  • Git
  • 博客搭建
  • Debug
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 后端开发

    • cmake介绍
    • \{}统一初始化方
    • C++11新特性
    • C++标准推荐使用标准库头文件
    • C++动态内存分配和静态的区别
    • C++类函数后面加const的作用
    • C++类和结构区别
    • C++内存区域
    • nullptr与NULL
    • priority_queue使用
    • string , cstring , string h 的区别
      • using与typedef定义别名区别
      • vector中[]和at访问区别
      • 常量指针和指针常量
      • 空类大小及相关介绍
      • 容器emplace与push操作
      • 数据结构操作——时间复杂度
      • 智能指针(Smart Pointers)
      • 最大堆的实现
    • Git

    • 博客搭建

    • Debug

    • python开发

    • 技术
    • 后端开发
    xzhouzeng
    2023-03-20
    目录

    string , cstring , string h 的区别

    # ,,<string.h>的区别

    Created: March 17, 2024 1:26 PM

    在C++中,字符串的操作和表示可以通过不同的方式和库来实现,这就涉及到三个头文件:<string>, <cstring>, 和 <string.h>。它们的区别主要体现在它们提供的功能和用法上:

    # 1. <string>

    • 用途:这个头文件定义了**std::string类,它是C++标准库中的一个非常重要的部分。std::string类提供了一种方便的方式来处理和操作动态大小的字符串。它支持许多成员函数,如append()**, replace(), **find()等,来进行字符串的操作。这些功能使得std::string**成为C++中处理字符串的首选方法。
    • 示例:std::string greeting = "Hello, World!";

    # 2. <cstring>

    • 用途:这个头文件提供了一系列的函数来处理C风格的字符串,即以空字符('\0')结尾的字符数组。这些函数包括**strcpy()**, strcat(), strcmp(), **strlen()**等,用于执行字符串的复制、连接、比较、计算长度等操作。这些函数是在C语言的基础上提供的,但它们在C++中仍然非常有用,尤其是处理与C语言代码的兼容性时。
    • 示例:char str1[20]; char str2[] = "Hello, World!"; strcpy(str1, str2);

    # 3. <string.h>

    • 用途:**<string.h>实际上是C语言中处理C风格字符串的头文件。在C++中,包含<string.h>会导致其内容在全局命名空间中可用,而<cstring>则是其内容在std命名空间下。实质上,<string.h>提供的功能与<cstring>相同,但它的使用不鼓励在C++代码中,因为C++标准推荐使用标准库头文件(即那些没有.h扩展名的版本)和std**命名空间。
    • 示例:与**<cstring>示例相同,但可能不使用std**命名空间。

    # 结论

    • 使用**<string>和std::string**类来处理字符串是C++的首选方式,它提供了强大的功能和良好的类型安全性。
    • **<cstring>和<string.h>**提供的功能基本相同,主要用于处理C风格的字符串。它们在C++程序中主要用于与C语言代码的兼容性或者当性能极其关键且需要直接操作字符串的内部表示时。
    • 在C++代码中,推荐使用**<cstring>而不是<string.h>**,以保持与C++的命名约定和标准库的一致性。
    编辑 (opens new window)
    priority_queue使用
    using与typedef定义别名区别

    ← priority_queue使用 using与typedef定义别名区别→

    最近更新
    01
    VideoLLMs
    03-20
    02
    Video2Script
    12-07
    03
    多模态
    11-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 xzhouzeng | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式