首页 > 编程语言 >c++ string类 和c 风格string 的问题梳理

c++ string类 和c 风格string 的问题梳理

时间:2022-10-02 08:44:05浏览次数:44  
标签:字符 string c++ 末尾 编译器 数组 梳理

1. 互相转换:

  c++ --->  c :                      cppstr.c_str()

  c     --->  c++ :       string cppstr = string(cstr)

  打印时、cout 都可以打印、如果用 printf 等方法那需要 %s

2. c++ string 的方法:

  直接点出来,有多少是多少

3. c 风格 string 的操作:

  定义一个 c 风格串有两(三)种方法

  给个字符数组让编译器去计算应该有多大,然后把每个字符复制到数组中 (或者可以开个很大的数组,自己写一堆字符进去,然后末尾追加 '/0' )

  给个常指针指向串的地址、然后拿str1 不能去改这个串!这个串就是只读的了! 

不写长度、让编译器去推测,那么会多开一个空间放 \0

如果想把一个东西格式化后放入字符数组,可以用 sprintf 、但现在推荐使用安全版本、操作后会自动在末尾加 \0 

 假如偏偏不要 \0 会怎么样?

上一种写法编译器能发现,那咱们偷渡一下、发现果然就炸了、其实 c 库操作字符串的函数都需要拿 \0 去判断是否到头!!!

 

 

总结:C字符串一定是字符数组、但只有 末尾(或中间) 带有 ‘\0’ 的字符数组才称的上是C字符串

   C串的灵魂就在 \0 的处理!

 

标签:字符,string,c++,末尾,编译器,数组,梳理
From: https://www.cnblogs.com/gs590/p/16748221.html

相关文章

  • c++ const 总结
    1.基本的定义一个常量 constinta=xxx2.constchar*p,char*constp区别前者表示指向的内容不能用p修改后者表示p不能指向别处const......
  • UE C++教程之接口 UINTERFACE
    我是谁不重要,重要的是,我能做什么。近期笔者在进行UE的开发时,实现多武器的换弹与开火需要用到接口。而笔者以前是做Unity开发的,遂没有使用过UEC++的UINTERFACE,而这个接......
  • 358 Rearrange String k Distance Apart 每个相同字母都要相距为k 767. Reorganize St
    Givenastring s andaninteger k,rearrange s suchthatthesamecharactersare atleast distance k fromeachother.Ifitisnotpossibletorearran......
  • [LeetCode] 1316. Distinct Echo Substrings 不同的循环子字符串
    Returnthenumberof distinct non-emptysubstringsof text thatcanbewrittenastheconcatenationofsomestringwithitself(i.e.itcanbewrittenas......
  • C++实现二分法求零点
    ​ 目录 前言题目:一、零点是什么?二、二分法求零点1.二分法2.完整代码总结 前言首先,我们要清楚我们是干嘛的;其次,知道原理;最后,才能明白自己要怎么办。明确:......
  • c++ vector
    创建vectorvector的几个别名:向量、动态数组头文件:#include<vector>记得加上std命名空间,不然会报错usingnamespacestd;创建vectorvector<int>A;//一维动态数组......
  • C++智能指针
    C++智能指针需要头文件<memory>不需要手动释放指针不是所有指针都能封装成智能指针,很多时候原始指针更加方便。std::unique_ptr任何时刻都只能有一个指针管理内存......
  • C++ 编程中常用的英文单词(首字母是A、B、C开头)
    学习编程不一定需要英语水平很高,能记住认识一些常用的英文单词也可以,有看不明白的文档资料也可以使用翻译工具,编写代码时大部分好用的IDE都是有代码提示的。本文主要介绍C+......
  • C++ 编程中常用的英文单词(首字母是D、E、F开头)
    学习编程不一定需要英语水平很高,能记住认识一些常用的英文单词也可以,有看不明白的文档资料也可以使用翻译工具,编写代码时大部分好用的IDE都是有代码提示的。本文主要介绍C+......
  • 对c++的一些思考
    能用初始化列表就用能写explicit就写能用c++11自带的跨平台函数、对象就用、但也要分情况,如果想完全知道自己在干什么就用系统API能自己写的就不要让编译器......