有了网站怎么做优化,装修公司展厅效果图,遵义门户网站,孟州网站开发app1.字符串字面量 2.C 风格字符串#xff08;基于字符数组的字符串#xff09; 3.C 标准库 string 类 4.字符串字面量与 std::string 的转换 1.字符串字面量 字符串字面量是C中最基础的字符串形式, 你可以把它理解为直接用双引号包裹的字符序列比如hello…1.字符串字面量2.C 风格字符串基于字符数组的字符串3.C 标准库 string 类4.字符串字面量与 std::string 的转换1.字符串字面量字符串字面量是C中最基础的字符串形式,你可以把它理解为直接用双引号包裹的字符序列 比如hello、C string都属于字符串字面量1).核心特性 a.本质 字符串字面量在内存中是以constchar[](常量字符数组)的形式存储的,并且自动在末尾添加\0(空字符)作为结束标志 b.只读属性 字符串字面量存储在程序的只读内存区域,不能修改,强行修改会导致程序崩溃 c.转义字符 支持转义字符(如\n换行、\t制表符、\表示双引号本身)2).代码示例#include iostreamusingnamespacestd;intmain(){// 基础的字符串字面量constchar*str_literalHello, C!;// 推荐用const修饰明确只读属性coutstr_literalendl;// 输出Hello, C!// 转义字符的使用constchar*escape_strLine1\nLine2\tTab\Quote\;coutescape_strendl;/* 输出 Line1 Line2 TabQuote */// 错误示例试图修改字符串字面量会导致程序崩溃// str_literal[0] h; // 编译可能警告运行时崩溃// 字符串字面量可以拼接多个双引号包裹的序列会自动合并constchar*concat_strHello World;coutconcat_strendl;// 输出Hello Worldreturn0;}2.C 风格字符串基于字符数组的字符串C风格字符串是从C语言继承来的,本质是以\0结尾的char类型数组,但可以修改,因为存储在可写内存区1).声明与初始化必须保证数组末尾有\0, 否则无法被正确识别为字符串(会出现乱码)#include iostream#include cstring// 必须包含该头文件使用C风格字符串的操作函数usingnamespacestd;intmain(){// 方式1直接初始化自动添加\0charc_str1[]Hello;// 数组长度为65个字符 \0cout长度strlen(c_str1)endl;// 输出5strlen只算有效字符不含\0cout数组大小sizeof(c_str1)endl;// 输出6包含\0// 方式2手动初始化必须显式加\0charc_str2[6]{H,e,l,l,o,\0};coutc_str2endl;// 输出Hello// 错误示例缺少\0输出乱码charc_str3[5]{H,e,l,l,o};coutc_str3endl;// 输出Hello 随机乱码直到找到内存中的\0return0;}2).C风格字符串的常用操作(依赖cstring库)3.C 标准库 string 类C推荐使用的字符串类型,封装了字符数组的底层细节,更安全、易用、支持动态长度,需要包含头文件string1).核心优势 a.自动管理内存,无需手动处理\0和数组长度 b.支持运算符重载(拼接、赋值、比较、[]访问字符等)c.提供丰富的成员函数(获取长度、查找、替换、清空等)2).声明和常用操作#include iostream#include string// 必须包含该头文件usingnamespacestd;intmain(){// 初始化方式strings1Hello;// 直接赋值strings2(World);// 构造函数初始化strings3s1 s2;// 拼接支持运算符couts3endl;// 输出Hello World// 常用成员函数cout字符串长度s3.size()endl;// 输出11等价于length()cout第一个字符s3[0]endl;// 输出H支持[]访问cout查找子串s3.find(World)endl;// 输出6返回子串起始下标// 修改字符串s3.replace(0,5,Hi);// 从下标0开始替换5个字符为Hicout替换后s3endl;// 输出Hi World// 清空字符串s3.clear();cout清空后是否为空s3.empty()endl;// 输出1truereturn0;}4.字符串字面量与 std::string 的转换a.字符串字面量转换为std::string,直接赋值即可 b.std::string转换为字符串字面量,用c_str()#include iostream#include stringusingnamespacestd;intmain(){// 1. 字符串字面量 → std::string直接赋值即可constchar*c_strHello;stringsc_str;coutsendl;// 输出Hello// 2. std::string → 字符串字面量用c_str()strings2World;constchar*c_str2s2.c_str();// 必须用const char*接收coutc_str2endl;// 输出Worldreturn0;}