C++字符串知识点小结

C++算法竞赛入门常用知识点 阅读详情

C++ 字符串

C++ 提供了一下两种类型的字符串表示形式:

  1. C风格字符串
  2. C++引入的string 类类型

C风格字符串

  1. C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

  2. 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。

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

等价为:

char greeting[] = "Hello";

字符串的内存 表示:
在这里插入图片描述
其实,您不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾。让我们尝试输出上面的字符串:
例如:

#include <iostream>
 
using namespace std;
 
int main ()
{
   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
 
   cout << "Greeting message: ";
   cout << greeting << endl;
   printf("%s",greeting);   //输出同上句一样
 
   return 0;
}

输出:
Greeting message: Hello

字符串的输入输出:

  1. scanf 输入 printf输出:
    %c 用于单个字符,能识别空格与换行,
    %s 用于字符数组,通过空格,换行来判定字符串的结束
#include<stdio.h>
int main()
{
    char s[10];
    scanf("%s",str);
    printf("%s",str);
    return 0;
}
输入:TAT TAT TAT
输出:TAT
  1. getchar 与 putchar
#include <stdio.h>
int main(){
    char c1, c2, c3;
    c1 = getchar();
    c2 = getchar();
    c3 = getchar();		    
    putchar(c1);
    putchar(c2);
    putchar(c3);
    return 0;
}
输入:
a b c
输出:
a b
因为 c2 存储的是换行符,因此字符 c 没有存入。
所以应该这样写:
#include <stdio.h>
int main(){
    char c1, c2, c3;
    c1 = getchar();
	getchar();
    c2 = getchar();
    getchar();
    c3 = getchar();

    putchar(c1);
    putchar(c2);
    putchar(c3);
    return 0;
}
输入:
a b c
输出:
a b c
  1. gets 与 puts:
    gets 用来输入一行字符串(注意:gets 识别换行符 \n 作为输入结束,gets可以识别空格并将其保存到字符串中,因此 scanf 完一个整数后,如果要使用 gets,需要先用 getchar 接收一个整数后的换行符),并将其存放于数组中;puts 用来输出一行字符串,并紧跟一个换行.
#include<stdio.h>
int main()
{
   char str1[20];
   char str2[5][10];
   gets(str1);
   for(int i = 0; i < 3; i++)
       gets(str2[i]);
   puts(str1);
   for(int i = 0; i < 3; i++)
       puts(str2[i]);
   return 0;
}

输入:abcd   //以换行区分字符的结束
     cdef
     efgh
     ghijk

输出:与输入一样    

当然 C++ 中提供一些函数用于字符串的处理
在这里插入图片描述

#include <iostream>
#include <cstring>
 
using namespace std;
 
int main ()
{
   char str1[11] = "Hello";
   char str2[11] = "World";
   char str3[11];
   int  len ;
 
   // 复制 str1 到 str3
   strcpy( str3, str1);
   cout << "strcpy( str3, str1) : " << str3 << endl;
 
   // 连接 str1 和 str2
   strcat( str1, str2);
   cout << "strcat( str1, str2): " << str1 << endl;
 
   // 连接后,str1 的总长度
   len = strlen(str1);
   cout << "strlen(str1) : " << len << endl;
 
   return 0;
}

输出:

strcpy( str3, str1) :  Hello
strcat( str1, str2):   HelloWorld
strlen(str1) :  10

C++ 中的String类

用法:

#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
   string str1 = "Hello";
   string str2 = "World";
   string str3;
   int  len ;
 
   // 复制 str1 到 str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;
 
   // 连接 str1 和 str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;
 
   // 连接后,str3 的总长度
   len = str3.size();
   cout << "str3.size() :  " << len << endl;
 
   return 0;
}
字符串数组
string name[5]; //定义一个字符串数组,它包含5个字符串元素

string name[5]={″Zhang″,″Li″,″Fun″,″Wang″,″Tan″};

当然string类也提供了一系列对字符串的操作

  1. append() – 在字符串的末尾添加字符
  2. find() – 在字符串中查找字符串
  3. insert() – 插入字符
  4. length() – 返回字符串的长度
  5. replace() – 替换字符串
  6. substr() – 返回某个子字符串
  7. size() – 返回字符串的长度
    比如:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    //定义一个string类对象
    string http = "www.runoob.com";

   //打印字符串长度
   cout<<http.length()<<endl;

    //拼接
    http.append("/C++");
    cout<<http<<endl; //打印结果为:www.runoob.com/C++

    //删除
    int pos = http.find("/C++"); //查找"C++"在字符串中的位置
    cout<<pos<<endl;
    http.replace(pos, 4, "");   //从位置pos开始,之后的4个字符替换为空,即删除
    cout<<http<<endl;

    //找子串runoob
    int first = http.find_first_of("."); //从头开始寻找字符'.'的位置
    int last = http.find_last_of(".");   //从尾开始寻找字符'.'的位置
    cout<<http.substr(first+1, last-first-1)<<endl; //提取"runoob"子串并打印

    return 0;
}
C++调用JSON-CPP库实现JSON字符串解析 1、下载JSON-CPP库https://sourceforge.net/projects/jsoncpp/ 2、解压jsoncpp-src-0.5.0.tar 3、打开VS2010新建一个名为testJson的空控制台程序,把刚刚解压的文件中include目录和src目录的文件autolink.h、config.h、features.h、forwards.h、json.h、json_batchallocator.h、json_internalarray.inl、json_internalmap 阅读详情

相关推荐

卡诺图化简法注意事项+竞争冒险知识点总结

今天反思以下卡诺图化简法中的注意事项。 卡诺图看起来简单,但如果不熟悉的话很容易出错,因此要对画圈的规则比较熟悉。

weixin_42415266的博客 1万+

【C++入门基础】C++中的String的常用函数用法总结及其模拟实现

c语言中,字符串是以 '\0' 结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。所以我们需要掌握c++中的string类。

AMor_05的博客 7516

openEuler 20.03 LTS面向RK3399移植系列(3)—openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4)

任务动机:完成openEuler面向RK3399开发板的移植。 任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。 1. 制作openEuler的rootfs.img 1.1 开发环境 树莓派--openEuler系统 openEuler 20.03 LTS 的内测版本镜像,下载。 1.2 具体操作 1.2.1 ssh远程连接树莓派 确定树莓派IP ssh连接 1.2.2 制作rootfs.img

火种源码的机器人技术专栏 2369

C/C++ 字符串操作总结(更新ing)

在 C++ 中我们可以使用 字符数组 来代替字符串,但字符串与字符数组不是完全等价的。C++字符串与字符数组区别在 C++ 中,字符串必须是以 做为结尾的,但字符数组没有这个要求。字符串一定是一个 char 类型的数组,但 char 的数组未必是字符串。数字 0(和字符 ‘\0’ 等价)结尾的 char 数组 就是一个字符串,但如果 char 数组没有以数字 0 结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的 char 数组。C++字符串与字符数组对比详解这里,我们指定了数组的长度,

weixin_53986026的博客 2769

PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded

PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded

睡觉不打呼噜的博客 1562

英语语法-句法

摘要:本文系统梳理了英语句法知识,重点解析了五种基本句型及其扩展结构。内容包括句子类型(陈述句、疑问句、祈使句、感叹句)、复合句构成(从句分类与连词使用)、特殊句型(倒装、强调、引语转换)等。特别强调句子成分分析技巧,指出每种句子成分可由不同词法单元充当,需掌握成分识别与划分方法。文章还提供了往期语法系列链接,形成完整的英语语法学习体系,帮助读者建立从词法到句法的系统认知框架。

STCNXPARM的博客 8803

C++字符串详解

字符串在计算机科学中,是一种重要的数据结构,它是由零个或多个字符组成的有限序列。字符可以是任何字符集中的元素,比如ASCII字符集、Unicode字符集等,它们可以是字母、数字、标点符号、空白字符以及其他可打印或不可打印的符号。在C/C++中,字符串通常被表示为一个字符数组,数组的最后一个元素是一个特殊的终止字符 \0,用来标记字符串的结束。在C++中,字符串的输入和输出可以通过标准输入输出流(iostream)库中的std::cin和std::cout进行操作。int main()

PingdiGuo_guo的博客 5542

Mac用户福音:三步搞定PyMol开源版,告别许可证弹窗(附Homebrew/MacPorts安装指南)

本文为Mac用户提供三步安装PyMol开源版的详细指南,帮助科研人员告别许可证弹窗烦恼。通过Homebrew或MacPorts包管理器安装开源核心,并与商业版图形界面整合,实现无干扰的分子可视化研究体验。特别适合MacOS用户快速部署PyMol进行结构生物学分析。

weixin_28743405的博客 194

c++字符串知识总结

substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。

miaojiachun的博客 1245

AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图)

本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。

red88的博客 799

基于非接触式微波雷达设计的睡眠监控系统_323

本项目设计了一种基于非接触式微波雷达的睡眠监控系统,通过高精度的生理信号采集与分析,帮助用户全面了解自身的睡眠状态和健康状况。系统采用60GHz频段的R60ABD1毫米波雷达模块,实现对人体呼吸频率、心率、活动状态、体动幅度等参数的非接触式测量;结合MLX90614红外体温传感器,能够实时监测人体体温。此外,系统通过蜂鸣器报警和数据上云功能,及时向用户反馈异常生理指标,确保健康风险早期预警。数据通过ESP8266-WIFI模块上传至华为云物联网平台,用户可通过Android手机APP和Windows上位机远

499

C++ string的详细总结

本文系统总结了C++中string类的核心用法,包括构造、赋值、拼接、查找替换、比较、存取等操作,并详细介绍了字符串长度获取的三种方法及注意事项。文章还阐述了string作为函数参数的两种使用场景:常规传参和包含默认参数的情况,特别强调了默认参数只能在函数声明中指定的编译规则。通过具体代码示例,全面展示了string类在实际编程中的应用技巧,为开发者提供了完整的string类使用参考。

zxy_ZXY123的博客 2272

国家自然基金回避专家有必要填写吗?被回避专家能看到吗?

不填也能中填1–2个最保险只填1个最直接竞争者。✅一句话结论可以不填,但建议填1–2个被回避专家绝对看不到如果你愿意,我可以再告诉你一个很多人不知道的国家自然基金“评审分组规则”——它其实决定了你的项目最可能送到哪些专家手里,这对地区基金中标率影响很大。

qq_15963745的博客 155

C++ string 字符串 知识点 小结

字符串String - 要求字符串类型、字符数组类型,字符指针类型三大类知识点。其中,字符指针特点在于存在移位操作和常量与变量两个属性。字符数组和字符指针可以采用C字符函数,而字符串对象则需要熟悉字符串方法。本章考察点主要有:字符类型转换,寻找字符串中高频子串,最长复现子串,字符串循环移位和字符串类方法与C方法的实现。

稚枭天卓 2819

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Cpp知识点系列-字符串

字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

君匡的博客 3117

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C/C++中字符串拼接的使用详解(加常见字符串使用小结)

C/C++中针对字符串函数的使用过程中,需要格外注意字符串终止符'\0'。字符串结尾处默认带'\0'。 带形参n的库函数可以有效防止因字符串长度过长导致的段错误,建议使用带n的字符串函数。一 、snprintf函数的使用字符串复制是别样的一种字符串拼接方式,通过将目标字符串复制到源字符串结尾处实现字符串拼接效果。int snprintf(char *str, size_t size, const char *format, ...)设将可变参数(...)按照 format 格式化成字符串,并将字符串复制到

qq_39645539的博客 3万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RapidFuzz-CPP:高效字符串相似度计算的C++利器

RapidFuzz-CPP是一款高性能C++字符串相似度计算库,支持Levenshtein距离、Jaro-Winkler等多种算法,具有SIMD加速和缓存优化等特点。该库采用纯头文件设计,支持跨平台使用,在数据清洗、中文文本匹配等场景中表现优异。通过基准测试显示,其性能比标准实现提升7-9倍。最佳实践包括使用UTF-8编码、数据预处理和合理选择算法。该库简化了文本相似度计算,为开发者提供了高效的解决方案。

llhllq2015的博客 1245

C++输入字符串小结

C++中常用的几种输入字符串的方式 cin、cin.get()、cin.getline()、getline()、gets()、getchar() https://blog.youkuaiyun.com/u011486738/article/details/82082405 字符串分割提取小结 使用sscanf()提取数据时,最好不要用string类型接收: string input, name; input = "1234 +abc"; sscanf(&input[0],"..

reason的博客 263

C++PrimerPlus知识点小结

C++融合了3种不同的编程方式:C语言代表的过程性语言,C++在C语言基础上添加的类代表的面向对象语言(oop),C++模板支持的泛型编程。 C++11初始化方式 //大括号初始化,等号可以使用,也可以不使用 int emus{7}; int rheas={12}; //大括号内不包含任何东西,这种情况下变量将被初始化为零 int rocs={}; ...

qq_34921856的博客 1065

C++基础知识点小结

C++基础知识点小结第一章 绪论(1)cout 输出流的对象(2)cin输入对象(3)endl 输出控制符/操控符(4)标识符(5)命名空间(namespace)(6)左值:(7)右值(8)c++赋值方式(整型和浮点型)(9)string字符串:第二章 引用与函数第三章 类的封装第四章 堆空间与深拷贝第五章 静态与友元第六章 继承与多态第七章 运算符重载第八章 模板与STL第九章 异常处理第十章 文件处理 C语言的缺点: 1.C类型检查机制相对较弱,这使得程序中的一些错误不能在编译时发现。 2.C本身

weixin_47946639的博客 513

C++输入一行字符串的一点小结

C++输入一行字符串的一点小结   原文链接: http://www.wutianqi.com/?p=1181   大家在学习C++编程时,一般在输入方面都是使用的cin. 而cin是使用空白(空格,制表符和换行符)来定字符串的界的。 这就导致了对于带有空格的字符串,比如”I Love C++奋斗乐园论坛” 只能读入”I”,后面的都无法读入。 这时怎么办?

码海坐标 1536

c++字符串小结

本文分享了在学习c++高级编程第三版时纪录的关于字符串理解还模棱两可的几个要点.

ntuhuangcheng的专栏 629

【C++快速上手】数值转换字符串方法小结

文章目录引言C++17 前的常用方法sprintf / snprintfExamplestringstreamExampleto_stringC++17的std::to_charExample性能对比 引言 在C++编程中,我们经常遇到的一个基础问题是类型转换,比如将某个数值类型的变量(整型或者浮点型)转换成文字字符串的一部分展示给用户,这个时候我们就需要将数值类型转换成字符串。特别是这种转换十分...

hhdshg的博客 2611

C++中的字符串

1.Cpp中的字符串 C++提供了以下两种类型的字符串表示形式: C风格字符串 C++引入的string类类型 1.1 C风格字符串 C风格的字符串起源于C语言,并在C++中继续得到支持。字符串实际上是使用null字符’\0’终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个"Hello"字符串。由于在数组的末尾存储了空字...

CurryCoder的个人博客 1232

C++字符串处理小结

转自:https://cloud.tencent.com/developer/article/1143683 C++中的字符串类型 常用的C++的字符串类型主要是std::string。它是模板std::basic_string的一个实例化。另外还有三个实例化std::wstring、std::u16string、std::u32string,不过不是很常用。 std::basic_str...

originalcandy的博客 906

GESP C++三级知识点

(1)了解二进制数据编码:原码、反码、补码。(2)掌握数据的进制转换:二进制、八进制、十进制、十六进制。(3)掌握位运算:与(&)、或(|)、非(!)、异或(^)、左移(<<)、右移(>>)的基本使用 方法及原理。(4)了解算法的概念,熟练运用自然语言、流程图、伪代码方式来描述算法。(5)掌握字符串及其函数的使用包括但不限于大小写转换、字符串搜索、分割、替 换。(6)理解枚举算法、模拟算法的原理及特点,可以解决实际问题。

欢迎来到码高信奥胡老师的博客~ 1107
上一篇: PTA 6-5 链式表操作集
下一篇: 带你走进 css 选择器
广州彭于晏
博客等级 码龄8年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值