首页 > 编程语言 >C12.【C++ Cont】string类字符串的创建、输入、访问和size函数

C12.【C++ Cont】string类字符串的创建、输入、访问和size函数

时间:2024-12-30 15:57:27浏览次数:3  
标签:Cont string 示例 str1 C++ istream 字符串 getline

目录

1.概念

2.string字符串的创建

示例代码

 运行结果

备注

 2.string字符串的输入

1.cin(字符串没有空格)

2.getline(可以读含有空格的字符串)

示例代码1:getline传两个参数

示例代码2:getline传三个参数

3.size函数

示例代码

运行结果

4.访问string类字符串

示例代码

 运行结果

5.附cplusplus官网的对string的介绍


1.概念

C语言用字符数组存储字符串,但C++中将字符串直接作为一种类型,也就是string类型

类比类型int:例如int a=0;可以推出string str = "Hello World!"

***使用string前一定要包含<string>头文件(不是<cstring>头文件!!!)***

2.string字符串的创建

string s1; 创建字符串
string s2 = "hello world"; 创建非空字符串

示例代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str1="abc";
	string str2;
	cout<<str1<<endl<<str2; 
	return 0;
}

注意 str1中的字符串不再以\0作为结束标志(这点和C语言不一样)

 运行结果

str1内容为"abc",因此打印结果不为空,str2没有内容可打印,因此打印结果为空

备注

1.string str1="abc";等价为用圆括号初始化:string str1("hello world");

2.string类字符串可以相互赋值:string str1="abc"; string str2 = str1;(但在数组中不可以这样写!)

char str1[] = "abc";
char str2[5];
//错误写法----------------------------------------

str1 = str2;//不能这样写! 地址常量不能直接赋值!

//错误写法----------------------------------------

 2.string字符串的输入

1.cin(字符串没有空格)

#include <string>
using namespace std;
int main()
{
	string str1;
	cin>>str1;
	return 0;
}

2.getline(可以读含有空格的字符串)

cplusplus网的介绍 点我跳转

从名字上理解,getline获取一行,在C++98标准中,getline有两种不同的形式,

istream& getline (istream& is, string& str);
istream& getline (istream& is, string& str, char delim);

解释:

1.istream全称input stream,为输入流,cin是istream类型的标准输入流对象

2.ostream全称output stream,为输入流,cout是ostream类型的标准输\出流对象

3.getline 函数作用:从输入流中读取一行文本信息,所有如果是在标准输入流(即键盘)中读取数
据,第一个参数可以写cin

示例代码1:getline传两个参数

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str1;
	getline(cin,str1);
	cout<<str1;
	return 0;
}

运行结果

 

此写法: istream& getline (istream& is, string& str);getline停止读取的结束标志字符(又称定界字符)(the delimitation character)默认为'\n',因此getline(cin,str1);的等价写法为getline(cin,str1,'\n');

因此istream& getline (istream& is, string& str, char delim);的第三个参数为结束标志字符,可以自己定义

示例代码2:getline传三个参数

	string str1;
	getline(cin,str1,'0');
	cout<<str1;

则getline会读取字符0前的字符串

运行结果

3.size函数

size() 函数用于获取字符串长度,调用该函数时要用 " . "点运算符

示例代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str0;
	string str1="abc";
    string str2="def ghi      ";
    cout<<str0.size()<<endl;
	cout<<str1.size()<<endl;
    cout<<str2.size();
	return 0;
}

运行结果

用电操作符的原因:string 是 C++提供的一种更加复杂的封装类型,在string类型的变量中加入了操作这个字符串的各种方法(函数), 比如求字符串长度、字符串末尾插入一个字符等操作。所以要
对string类型的变量进行各种操作,就可以使用 . 操作符来使用这些函数

例如在Dev C++中输入str1.会显示大量的函数

4.访问string类字符串

可以像访问数组元素那样,通过下标逐个访问

示例代码

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str = "abcdef";
	int i = 0;
	for(i = 0; i < str.size(); i++)
	{
		cout << str[i] << " ";
	}
	return 0;
}

 运行结果

5.附cplusplus官网的对string的介绍

https://legacy.cplusplus.com/reference/string/string/

标签:Cont,string,示例,str1,C++,istream,字符串,getline
From: https://blog.csdn.net/2401_85828611/article/details/144805382

相关文章

  • 通过代码彻底搞懂 Ragas 的 Context Precision 是什么
    通过代码彻底搞懂Ragas的ContextPrecision是什么在信息检索和机器学习中,评估检索结果的质量非常重要。ContextPrecision是一个用于衡量"检索上下文"中相关文本块比例的指标。它的计算方法是对上下文中每个文本块的精度@k值取平均。精度@k是指在排名k位置的相关文本......
  • 1. C++快速入门--变量和基本类型, 类别
    文章使用obsidian编写,双链部分可能失效1基本内置类型1.1算术类型算术类型介绍bool类型字符类型整数类型实数浮点、虚数浮点和复数浮点参看如下表![[Pastedimage20230814160130.png|700]]带符号和无符号类型的变量分为:signed和unsignedunsigned变量......
  • 【Rust自学】8.4. String类型 Pt.2:字节、标量值、字形簇以及字符串的各类操作
    8.4.0.本章内容第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编译时就确定,在运行时它们......
  • enq: US - contention等待时间
    1.1问题现象 应用反馈业务执行SQL响应超时,需要数据库排除DB是否存在问题,创建AWR观察到topevent新增enq:US-contention ???1.2问题分析1)DBTime指标2020-11-1217:3018:00DBtime3310.192020-11-1218:0018:30......
  • qt/c++ 学习笔记之网页照片爬虫
    *注意:本爬虫使用的qt版本为5.14.2,使用的是qtwebkit类是自己配置了qtwebkit和对应qt版本的openssl,其中qtwebkit类在qt5.15和qt6版本已经删除,需要自己私下配置qtwebkit和对应qt版本的openssl头文件widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include......
  • C++关键字
    C++关键字static类和结构体外的static被static修饰后只在内部发生链接,其作用域只在其所在的文件中。类和结构体内的staticstructEntity{ staticintx,y; 静态成员变量 staticvoidPrint() { std::cout<<x<<","<<y<<std::endl; }};intEntity::x; //......
  • MCP(Model Context Protocol)模型上下文协议 进阶篇2 - 消息格式和功能
    在开发前,首先带大家熟悉一下MCP协议的消息格式,和所有可能需要进行协商的功能:MCP协议通过JSON-RPC2.0规范定义了请求、响应和通知三种消息类型,确保通信的标准化和一致性。能力协商机制使客户端和服务器能够动态确定支持的协议功能,提升协议的灵活性和扩展性。子能力的引入进一......
  • C++标准库
        【欢迎关注编码小哥,学习更多实用的编程方法和技巧】    C++标准库是C++语言的重要组成部分,它为程序员提供了一系列的功能强大的工具和组件,帮助他们更高效地进行软件开发。标准库不仅包括基本的输入输出功能,还涵盖了数据结构、算法、内存管理、日期和时间处......
  • c++《射击小游戏》
    #include<easyx.h>#include<time.h>#include<conio.h>classBullet;classTank;classE_Bullet;classBoss;booldead=false;boolwined=false;structpos//坐标类{inta;intb;};classE_Bullet//敌人打出的子弹{public:clock_td;in......
  • AcWing 791:高精度加法 ← string+数组
    【题目来源】https://www.luogu.com.cn/problem/P1601https://www.acwing.com/problem/content/793/【题目描述】高精度加法,相当于a+bproblem,不用考虑负数。输入不含前导0。【输入格式】分两行输入。a,b≤10^500。【输出格式】输出只有一行,代表a+b的值。【输入样例】1......