当前位置: 首页 > article >正文

C16.【C++ Cont】string类字符串的关系运算和与string有关的函数

目录

1.知识回顾:strcmp函数

2.六个关系运算符

示例代码1

运行结果

示例代码2

运行结果

3.stoi和stol函数

1.stoi函数

函数声明

使用说明

示例代码3

运行结果

示例代码4

运行结果

示例代码5

运行结果

示例代码6

运行结果

2.stol函数

4.stod和stof函数

1.stod函数

函数声明

示例代码7

运行结果

2.stof函数

5.to_string函数(注意有下划线!!!)

函数声明

示例代码8

运行结果


1.知识回顾:strcmp函数

参见53.【C语言】 字符函数和字符串函数(strcmp函数)文章

C++的字符串的关系运算比strcmp函数的功能要强大

2.六个关系运算符

cplusplus官网的介绍 点我跳转

C++98标准

//注:const string& lhs为string类字符串
//注: const char*为C语言风格的字符串
(1)	

bool operator== (const string& lhs, const string& rhs);//s1==s2
bool operator== (const char*   lhs, const string& rhs);//s1==s2
bool operator== (const string& lhs, const char*   rhs);//s1==s2

(2)	

bool operator!= (const string& lhs, const string& rhs);//s1!=s2
bool operator!= (const char*   lhs, const string& rhs);//s1!=s2
bool operator!= (const string& lhs, const char*   rhs);//s1!=s2

(3)	

bool operator<  (const string& lhs, const string& rhs);//s1<s2
bool operator<  (const char*   lhs, const string& rhs);//s1<s2
bool operator<  (const string& lhs, const char*   rhs);//s1<s2

(4)	

bool operator<= (const string& lhs, const string& rhs);//s1<=s2
bool operator<= (const char*   lhs, const string& rhs);//s1<=s2
bool operator<= (const string& lhs, const char*   rhs);//s1<=s2

(5)	

bool operator>  (const string& lhs, const string& rhs);//s1>s2
bool operator>  (const char*   lhs, const string& rhs);//s1>s2
bool operator>  (const string& lhs, const char*   rhs);//s1>s2

(6)	

bool operator>= (const string& lhs, const string& rhs);//s1>=s2
bool operator>= (const char*   lhs, const string& rhs);//s1>=s2
bool operator>= (const string& lhs, const char*   rhs);//s1>=s2

注:两个C语言风格的字符串不能直接比较!!!

比较的过程和strcmp一样:基于字典序进行,比较是对应位置上字符的ASCII值的大小,不是字符串的长度

备注:<=指的是小于等于;>=指的是大于等于

示例代码1

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s1="abc";
	string s2="abc"; 
	string s3="def"; 
	string s4="abe";
	string s5="aba";
	if (s1==s2)
		cout<<"s1==s2"<<endl;
	if (s1!=s3)
		cout<<"s1!=s3"<<endl;
	if (s1<s4)
		cout<<"s1<s4"<<endl;
	if (s1>s5)
		cout<<"s1>s5"<<endl;
	return 0;
}

运行结果

示例代码2

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s1="abc";
	char s2[]="abc";//C语言风格的字符串 
	if (s1==s2)
		cout<<"s1==s2"<<endl;
	return 0;
}

运行结果

3.stoi和stol函数

stoi全称string to int,即把字符串转换为整型;stol全称string to long int,即把字符串转换为长整型

cplusplus官网对stoi函数的介绍 点我跳转

cplusplus官网对stol函数的介绍 点我跳转

1.stoi函数

函数声明

int stoi (const string&  str, size_t* idx = 0, int base = 10);

注:要包含<string>头文件 (cplusplus官网stoi函数有两种声明,这里只介绍第一种)

使用说明

1.str表示被转换的string类型的字符串
2.idx(全称index,即索引)是一个输出型参数,即这个通过这个参数会带回一个值;idx 是一个指针,需要在外边创建一个size_t 类型的变量,传递它的地址给idx,这个参数将会带回str中无法正确匹配数字的第一个字符的位置
3.base表示被解析的字符串中数字的进制值,可以是2、8、10、16或0
        默认情况下这个值是10,表示为10进制数字
        如果传递的是2,表示被解析的字符串中是2进制的数字,最终会转换成10进制
        如果传递的是8,表示被解析的字符串中是8进制的数字,最终会转换成10进制
        如果传递的是16,表示被解析的字符串中是16进制的数字,最终会转换成10进制
        如果传递的是0,会根据字符串的内容的信息自动推导进制,例如:字符串中有0x就认为
        是16进制,0开头会被认为是8进制,最终会转换成10进制

示例代码3

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="123abc";
	size_t idx=0;
	int ret=stoi(s,&idx);//默认十进制 
	cout<<ret<<endl;//以十进制打印 
	cout<<"idx:"<<idx<<endl;
	return 0;
}

运行结果

注:示例代码中如果不想用idx接收,stoi的第二个参数可以写成NULL或者0

示例代码4

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="110123abc";
	size_t idx=0;
	int ret=stoi(s,&idx,2);//二进制 
	cout<<ret<<endl;//以十进制打印 
	cout<<"idx:"<<idx<<endl;
	return 0;
}

运行结果

示例代码5

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="1728abc";
	size_t idx=0;
	int ret=stoi(s,&idx,8);//默认十进制 
	cout<<ret<<endl;//以十进制打印 
	cout<<"idx:"<<idx<<endl;
	return 0;
}

运行结果

示例代码6

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="0x12ff40gh";
	size_t idx=0;
	int ret=stoi(s,&idx,0);//第三个参数为0为自动推导
	cout<<ret<<endl;//以十进制打印 
	cout<<"idx:"<<idx<<endl;
	return 0;
}

运行结果

2.stol函数

和stoi用法一样,只不过int类型换成了long int类型,这里不再赘,注:要包含<string>头文件

4.stod和stof函数

stod全称string to double,即把字符串转换为双精度浮点数;stof全称string to float,即把字符串转换为单精度浮点数

cplusplus官网对stod函数的介绍 点我跳转

cplusplus官网对stof函数的介绍 点我跳转

注:要包含<string>头文件  

1.stod函数

函数声明

double stod (const string&  str, size_t* idx = 0);

和stoi 函数的比较的话,少了描述字符串中数字进制的参数,其他参数一致 

注:要包含<string>头文件 (cplusplus官网stoi函数有两种声明,这里只介绍第一种) 

示例代码7

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="13.12aaa";
	double ret=stod(s,NULL);
	cout<<ret<<endl;
	return 0;
}

运行结果

2.stof函数

和stod用法一样,只不过double类型换成了float类型,这里不再赘,注:要包含<string>头文件

5.to_string函数(注意有下划线!!!)

to_string顾名思义:将数字转换为字符串

cplusplus官网对to_sting函数的介绍 点我跳转

函数声明

string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

可以看出,可以将不同类型的数字转换为字符串 ,注:要包含<string>头文件

示例代码8

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s=to_string(3.14);
	cout<<s<<endl;
	return 0;
}

运行结果


http://www.kler.cn/a/488446.html

相关文章:

  • JavaScript系列(10)-- Map数据结构专题
  • 如何确保获取的淘宝详情页数据的准确性和时效性?
  • 基于Ubuntu2404脚本搭建openstackC版-ovn网络驱动
  • 设计模式 创建型 抽象工厂模式(Abstract Factory)与 常见技术框架应用 解析
  • Win32汇编学习笔记06.APIHook
  • 单片机 期末笔记
  • 《探秘鸿蒙NEXT中的人工智能核心架构》
  • 【2025 Rust学习 --- 11 实用工具特型01】
  • 车载音频开发(二):对音频数据作音量调节
  • Java 基于微信小程序的高校科研团队管理系统设计与实现(附源码,部署,文档
  • PHP RCE
  • JS爬虫实战演练
  • js观察者模式
  • nginx反向代理和负载均衡的区别
  • 【LeetCode】303. 区域和检索 - 数组不可变
  • linux 设置mysql 外网访问
  • 微信原生小程序自定义封装组件(以导航navbar为例)
  • 1.3作业
  • 机器学习的基本原理和算法
  • 缓存-Redis-API-Redisson-可重试