首页 > 编程语言 >C++数组 字符串

C++数组 字符串

时间:2024-07-13 12:07:36浏览次数:12  
标签:std const string int wzs C++ 数组 字符串

是什么:
相同类型元素的集合
写法:
int example[3]//数组在声明大小时必须为常数
数组名 example是个指针类型 如int*ptr=example;
数组索引的工作原理:

example[3]//从首地址位置偏移数组类型大小(int 是 4字节)乘索引值(4*3)个字节 
//从当前字节位置往后读四个字节;

可能出现的错误:
example[-1]//访问了不属于数组内的内存空间,可能会修改到别的变量的值
比如 int a;a的地址是1 example[-1]访问的地址也是 1 如果更改会把a的值也改掉 。
解决方法:设置安全检查确保写的东西不会超出边界
数组的创建方法:
int main()
{
int example[5]//在栈上穿件的,出当前作用域时会自动销毁
int* another=new int[5];//在堆上建立的除非手动销毁 不然会一直到程序结束;
}

std::array
要引用
写法:
std::array<类型,数量>数组名
例如std::array<int,5>another;
对比原始数组 有.size()方法
会有性能开销,它会做所有的边界检查 也保持了一个整数size(数组大小);
计算数组大小的方法:

int size=sizeof(example)/sizeof(int);//计算出整个数组内存多大 在除单个元素内存多大 
//得出数组的元素个数;该方法不怎么可用最好是自己维护数组大小

字符串

是什么:
本质是一个接一个的字符的一组字符,指字母符号;
什么时候用:
想要表示文本或一组文本
书写习惯:
用的时候加上const
怎样工作:
字符串实际上是字符数组类型是const char*
注意字符串是不可变的
写法举例:
const char*name="wzs";//可用strlen()计算长度
实际上字符串的全部内容是 wzs\0
\0是空终止符表示0 告诉编译器碰到空终止符 表示字符串已经结束了
写法2:
引用 < string >
std::string
std::string name="wzs ";
写法3:
char a[]="wzs hello!";

string 类中有个构造函数接受char或const char参数
" "是字符串字面量

计算字符串长度大小

strlen()接受char或const char参数
计算的长度不包含空终止符

追加字符串

法1:
std::string name="wzs";原理是将const char类的“wzs”解引用内容复制到string类型的name变量中去
name+="hello";//是将一个指针加到了name(是个字符串)加到一个字符串
+=在string类中被重载了
法2:
std::string name=std::string("wzs")+"hello";//std::string("wzs")调用构造函数 //相当于创建了一个string实例
用string类对比其他字符串方法
用string类可以调用.find()方法
功能:找到字符串中的文本 并返回要查找 文本的首地址;
std::string::npos;//代表一个不存在的位置
法3:
std::string name="wzs"s+"hello!";//这里的s是个函数 作用是返回标准字符串对象
法4:
const char
example=R"wzs\n"
"hello! "

字符串字面量

是什么:
""双引号之间的一串字符
注意:
是存在内存的只读部分的 什么情况下都不能修改;

字符类型

const wchar_t
是什么:
宽字符,两个字节的字符,但具体由编译器决定
实例:
const wchar_tname=L"wzs";//L表示后面的字符串字面量由宽字符组成一个字符占一个字节;
const char16_t
是什么:
两个字节 也就是16比特,区别于wchar_t 是确定的2字节不由编译器自己决定
写法:
const char16_t
name=u"wzs";

标签:std,const,string,int,wzs,C++,数组,字符串
From: https://www.cnblogs.com/WZline/p/18299921

相关文章

  • [LeetCode]961. 在长度 2N 的数组中找出重复 N 次的元素
    /*961.在长度2N的数组中找出重复N次的元素已解答简单给你一个整数数组nums,该数组具有以下属性:nums.length==2*n.nums包含n+1个不同的元素nums中恰有一个元素重复n次找出并返回重复了n次的那个元素。示例1:输入:nums=[1,2,3,3]输出:3示例2:输入......
  • 数组
    数组相同类型数据的有序集合,数组也是对象,数组长度一旦确定不可更改。每一个数据被称为一个数组元素,每个数组元素可以通过索引(下标,从0开始)访问必须先声明数组变量,才能使用数组:数据类型[]数组名称;例:Int[]nums;Java用new操作符创建数组,例:nums=newint[10];获取数......
  • 解决Microsoft Visual C++ runtime package找不到问题
    使用了Dism++进行电脑清理,不小心选择了下面两个内容:尤其是第二个packagecache绝对不能清空,否则不知道哪个软件就不能运行了,报MicrosoftvisualC++runtime问题.然后再安装各个版本MicrosoftvisualC++redis仍会报同样的问题,死循环了.网上有各种解决方案,有......
  • 后缀数组【jiangly模板】
    目录后缀数组简介后缀数组可以用于什么场景如何实现后缀数组倍增法求后缀数组\(height\)数组\(LCP\)(最长公共前缀)\(height\)代码模板参考文章后缀数组是一种非常强大的一种处理字符串问题的工具后缀数组简介前置知识:计数排序、基数排序后缀数组(SuffixArray)主要关系到两......
  • C++中的可见性 指针 笔记
    含义:谁能看到他们谁能调用?谁能使用?可见性的修饰符:private含义:只有其所在的类可以访问,被修饰的变量但是friend关键字可以让类或者函数成为朋友(友元)可以在别处访问私有成员protected含义:所在的类和层次结构中的所有子类可以访问这些符号例子:classprintable{prot......
  • 【C++】内存分区模型 - 内存四区
    补充内容:c++编译过程:编译预处理、编译优化、汇编、链接①编译预处理:处理以“#”开头的指令,产生“.i”文件;【如头文件、define宏定义等】②编译优化:将源码".cpp"文件翻译成“.s”汇编代码;【如词法语法语义分析,代码优化等】③汇编:将汇编代码“.s”翻译成机器指令“.o”或".ob......
  • 南外c++集训枚举题:关灯
    根据标题可知这道题一定是一道枚举题这道题考虑使用dfs,处理特殊处理第一层,每次加答案时选最优值。给出代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,m;charmat[20][110];intdfs(intcnt,intpos,inttmp)//cnt:楼层pos:哪里的楼梯tmp走到楼梯......
  • 【C语言】字符串与相关操作函数
    字符串思路分析在注释文章目录字符串一、字符串的定义1.使用sizeof()计算他们的长度二、sizeof和strlen的区别1.sizeof操作符2.strlen函数三、动态开辟字符串1.malloc函数2.realloc函数3.free函数4.memset函数四、几种字符串常用的API1.strncpy函数2.asse......
  • 2024年06月CCF-GESP编程能力等级认证C++编程三级真题解析
    本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有()种。A.1B.2C.3D.4答案:C第2......
  • 嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)
    1.项目概述本项目旨在开发一套先进的智能工厂设备监控系统,集成嵌入式技术、工业通信协议和人机界面等多项技术,实现对工厂设备的全方位实时监控、高精度数据采集和智能化分析。该系统将显著提升工厂设备的运行效率,大幅降低维护成本,并为管理层决策提供可靠的数据支持。主要功......