C和C++的区别(6)字符串

news2025/2/27 16:30:19

目录

一,字符

二,C语言字符串

1,字符串的表示

2,输入输出

3,常用函数

三,string类

1,定义,初始化,输入输出


一,字符

类型:char

输入:getchar

输出:putchar

示例:

#include <stdio.h>

void main()
{
	char ch;
	while (ch = getchar())
	{
		if (ch == EOF)break;
		printf("%d", ch);
		putchar(ch);
	}
	return;
}

运行结果:(8行)

a^Zb
97a
26
a
97a
10

^Z

解释:

输入a^Zb并回车,输入了2个字符a和^Z,再输入a并回车,输入了2个字符a和换行符,再输入^Z程序结束

注1:

'\0'的ASCII码是0,‘^A’ - '^Z' 的ASCII码是1-26,其中换行符'\n'的是10,'^Z'的是26,但是当输入缓冲区为空时'^Z'出现在'\n'之后时,'^Z'的ASCII码是-1,表示文件结尾end of file

注2:

EOF是常量-1,OJ输入输出经常用EOF来控制。

注3:

10号'\n'和26号'^Z'都是getchar的截断,输入一行字符串,getchar只能读取到第一个'\n'或'^Z',后面如果还有就丢弃

二,C语言字符串

1,字符串的表示

c语言中,字符串用char数组表示,字符串末尾加上'\0'表示结束

2,输入输出

输入:gets

输出:puts

示例:

#include <stdio.h>
#include<string.h>

void main()
{
	char str[]="abcde";
	puts(str);
	gets(str);
	printf("%d\n", strlen(str));
	puts(str);
	return;
}

运行结果1:(4行)

abcde
^Za
5
abcde

运行结果2:(5行)
 

abcde
a^Zb

2
a?

可以看出,换行符和^Z都是gets函数的截断,区别在于

换行符会被gets读取并丢弃,而gets对^Z的处理和getchar一样,缓冲区为空时就是-1号字符,缓冲区不为空时就是26号字符

3,常用函数

(1)strcat函数——字符串连接

string catenate字符串连接

示例:

#include <stdio.h>
#include<string.h>

void main()
{
	char str1[10] = "ab";
	char str2[] = "cd";
	printf("%d %d\n", strlen(str1), strlen(str2));
	strcat(str1, str2);
	printf("%d %d\n", strlen(str1), strlen(str2));
	printf("%s %s", str1, str2);
	return;
}

运行结果:

2 2
4 2
abcd cd

strcat(str1, str2)函数就是把str2复制到str1后面

(2)strcpy和strncpy函数——字符串复制

strcpy(str1,str2)把str2复制到str1的位置

strncpy(str1,str2,n)把str2的前n个字符复制到str1的位置

(3)strcmp函数——字符串比较

strcmp(str1,str2)是按照字典序比较,返回值>0,=0,<0分别表示str1>str2,str1==str2,str1<str2

(4)strlen和sizeof——字符串长度

sizeof是关键字,计算的是数组长度

strlen是函数,计算的是字符串中字符数目,不包括'\0'

(5)strlwr和strupr函数——字符串大小写

strlwr是把大写字母换成小写字母

strupr是把小写字母换成大写字母

总结:C-风格字符串输入——cin或者getline或者get,cin是以空格或换行结束,getline和get都是读取一行。

getline函数会读取并丢弃换行符,而get函数如果带参会保留换行符在输入缓冲区,get函数如果不带参可以读取并丢弃换行符。

三,string类

 

1,定义,初始化,输入输出

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abc";
    cin>>str;
    cout<<str;
    return 0;
}

2,string的赋值、计算长度、翻转

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1="abc";
    string str2=str1;
    reverse(str2.begin(),str2.end());
    cout<<str1<<" "<<str1.length()<<" "<<str2;
    return 0;
}

3,从string中取字符

可以用数组形式,也可以用迭代器形式

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abcde";
    cout<<str[2]; 
    string::iterator it=str.begin();
    cout<<*it;
    it=str.end()-1;
    cout<<*it;
    return 0;
}

输出:

cae

4,string的比较、连接

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str1="abc",str2="def",str3="def";
    if(str1<str2)cout<<"str1<str2\n";
    if(str2==str3)cout<<"str2=str3\n";
    cout<<str1+str2;
    return 0;
}

输出:

str1<str2
str2=str3
abcdef

5,string转字符数组

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abc";
    const char *p1=str.c_str();
    char *p2=new char[20];
    strcpy(p2,p1);
    cout<<p2;
    return 0;
}

6,string中查找字符

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str="abca";
    cout<<str.find('a')<<" "<<str.find('a',2);
    return 0;
}

输出:

0 3

附上c++课本上的string常用函数:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sealos安装k8s

一、前言 1、我前面文章有写过使用 kubeadm 安装的方式&#xff0c;大家可以去参考 &#xff08;二&#xff09;k8s集群安装&#xff0c;有一系列的k8s文章说明 2、安装k8s的方式有很多 kubeadmsealoskubespray等等 3、关于sealos来安装 k8s &#xff0c;也是非常建议大家去…

ACM输入总结

目录 一&#xff0c;输入结构 1&#xff0c;一级输入结构 2&#xff0c;嵌套输入结构 二&#xff0c;一级输入结构 HDU 1089 AB for Input-Output Practice (I) HDU 1090 AB for Input-Output Practice (II) HDU 1091 AB for Input-Output Practice (III) HDU 1095 AB …

浅谈智慧消防助力现代社会火灾防控 安科瑞 顾语欢

摘 要&#xff1a;随着我国经济水平的不断提高&#xff0c;科学技术取得了长足进步。科学技术的进步推动着社会不断前进&#xff0c;改变了各行各业的人们的生活。随着各种新型的技术尤其是人工智能技术的出现&#xff0c;社会进入了智能化时代。消防作为维护我们生活的一道重要…

ava算法_ 跳跃游戏(LeetCode_Hot100)

题目描述&#xff1a;给你一个非负整数数组 &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。nums 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 &#xff1b;否则&#xff0c;返回 。truefalse 获得更…

[保研/考研机试] KY7 质因数的个数 清华大学复试上机题 C++实现

描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如1202*2*2*3*5&#xff0c;共有5个质因数。 输入描述&#xff1a; 可能有多组测试数据&#xff0c;每组测试数据的输入是一个正整数N&#xff0c;(1<N<10^9)。 输出描述&#xff1a; 对于每组数…

vite+vue3项目环境搭建

1.安装 npm init vite 2.输入项目名称 vue3-project 3.选择框架 说明&#xff1a;vue 4.选择类别 说明&#xff1a;JavaScript 5.进入文件夹 cd vue3-project yarn npm run dev 6.打开local

十种排序算法(附动图)

排序算法 一、基本介绍 ​ 排序算法比较基础&#xff0c;但是设计到很多计算机科学的想法&#xff0c;如下&#xff1a; ​ 1、比较和非比较的策略 ​ 2、迭代和递归的实现 ​ 3、分而治之思想 ​ 4、最佳、最差、平均情况时间复杂度分析 ​ 5、随机算法 二、排序算法的分类 …

【LeetCode-中等】剑指 Offer 29. 顺时针打印矩阵(详解)

题目 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,1…

【前端 | CSS】滚动到底部加载,滚动监听、懒加载

背景 在日常开发过程中&#xff0c;我们会遇到图片懒加载的功能&#xff0c;基本原理是&#xff0c;滚动条滚动到底部后再次获取数据进行渲染。 那怎么判断滚动条是否滚动到底部呢&#xff1f;滚动条滚动到底部触发时间的时机和方法又该怎样定义&#xff1f; 针对以上问题我…

WinServer2016 DHCPv6部署

Windows Server 2016 部署 DHCPv6 应用场景&#xff1a;如果服务器的 idrac 地址配置之后忘记了&#xff0c;又无法不能重启服务器&#xff0c;可以通过 DHCPv6 来解决。因为服务器 idrac 的 ipv6 自动获取是默认开启的&#xff0c;那么可以用笔记本装个 windwos server 的系统…

Vue2 实现购物车功能(可直接使用)

目录 vue2.0实例简单购物车代码实现 vue2.0实例简单购物车 页面展示效果如下&#xff1a;​ 该购物车实现了自动计算小计、总价。 代码实现 <body><div id"app"><div><form action"">商品名称:<input type"text" …

卡巴斯基为基于Linux的嵌入式设备推出专用解决方案

导读卡巴斯基在其卡巴斯基嵌入式系统安全产品中引入了对 Linux 的支持。这种适应性强的多层解决方案现在为基于Linux的嵌入式系统、设备和场景提供优化的安全&#xff0c;合通常适用于这些系统的严格监管标准。 卡巴斯基在其卡巴斯基嵌入式系统安全产品中引入了对 Linux 的支持…

编程小白必看!Visual Studio 2022详细安装使用教程(C/C++编译器)

目录 【前言】 一、Visual Studio 2022简介 二、Visual Studio 2022下载安装 1.Visual Studio 2022下载地址 2.Visual Studio 2022安装 2.1下载完成后点击打开安装 2.2安装完毕以后需要重启软件&#xff0c;点击确定。 三、Visual Studio 2022使用教程 【最后】 &#x…

分享一颗能用在TYPE-C接口取电协议芯片LDR6328Q,方便好用

芯片功能&#xff1a;诱导PD充电器输出最大功率&#xff0c;支持最大诱骗20V电压。支持协议&#xff1a;PD/QC/三星AFC/华为SCP等主流快充协议 芯片封装&#xff1a;QFN16,SOP8多封装选择 芯片应用&#xff1a; 桶形连接器替换&#xff08;BCR&#xff09;&#xff0c;USB-A和m…

ABAP: SQL 多值查询

基础查数据 问题举例&#xff1a;例如查物料类型为ZFRT、ZROH和ZRSA的物料编码。 1、直接查询&#xff0c;三种不同类型的物料类型是或的关系。 SELECT DISTINCT ma~matnr ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr mb~matnrINTO CORRESPONDING FIELDS OF…

模型训练----将日志输出为txt

1、写入txt 在云服务器上训练模型的时候&#xff0c;防止不显示输出&#xff0c;可以将训练日志写入txt import logging#初始化文件&#xff0c;filemodew每次覆盖文件 logging.basicConfig(filename./log.txt,format %(asctime)s - %(name)s - %(levelname)s - %(message)s-…

笔记本电脑合上盖后重新打开(秒开)处理方案

原因&#xff1a;合上盖默认进入休眠&#xff0c;电脑内存进入运存&#xff0c;重新打开数据重新传入内存&#xff0c;时间很长&#xff0c; 方案&#xff1a;将休眠模式改为从不即可

机器学习模型的可解释性:增加对人工智能系统的信任和理解

为了以道德和值得信赖的方式使用人工智能&#xff0c;研究人员必须继续创建平衡模型复杂性和易于解释的方法。 机器学习模型在各个领域的使用都取得了重大进展&#xff0c;包括自然语言处理、生成式人工智能和自主系统等。另一方面&#xff0c;随着模型复杂性和规模的增加&…

山东布谷科技直播平台搭建游戏开发技术分享:数据存储的重要意义

在市场上的热门的直播平台中&#xff0c;有很多小程序为用户提供各种各样的功能&#xff0c;这其中就有很多游戏小程序&#xff0c;当今社会独生子女众多&#xff0c;很多作为独生子女的用户都会去选择一个能够社交互动的APP来填补内心的空虚&#xff0c;而直播平台的实时互动的…

python自动化测试框架unittest与pytest的区别

前言&#xff1a; 有使用过unittest单元测试框架&#xff0c;再使用pytest单元测试框架&#xff0c;就可以明显感觉到pytest比unittest真的简洁、方便很多。 unittest与pytest的区别&#xff1a; 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行…