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

常用字符字符串处理函数

isdigit、isalnum、isalpha、islower、issupper都是C/C ++语言中判断字符的一些函数,灵活利用在刷题中可以节省我们的一部分时间。下面c统一为char类型字符

1.isdigit

若参数c为十进制数字0~9,则返回非0值,否则返回0。

其中isxdigital判断是否是十六进制数

2.isalnum

用来判断一个字符是否为数字或者字母,如果是,则返回非零,否则返回零。

3. isalpha

 用来判断一个字符是否为字母,如果是,则返回非零,否则返回零。

4. islower

用来判断一个字符是否为小写字母,如果是,则返回非零,否则返回零。

tolower转换成小写

5. islsupper

用来判断一个字符是否为大写字母,如果是,则返回非零,否则返回零。

toupper转换成大写

二、stoi, stoll用法

一、stoi将字符串转换为int类型整数
头文件string

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

解析str将其内容解释为指定基数的整数,并以int值的形式返回。

如果idx不是空指针,则该函数还将idx的值设置为数字后str中第一个字符的位置。

base:进制,10:十进制,8:八进制,16:十六进制,0:则自动检测数值进制,str 是 0 开头为八进制,str 是 0x 或 0X 开头是十六进制,默认为十进制

stoi() 函数指定转换字符串为十进制用法

#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{int a;size_t pos = 0;string str;str = "-1235";a = stoi(str);cout << "a = " << a << endl; //a = -1235str = "1235";a = stoi(str);cout << "a = " << a << endl; //a = 1235str = "  -12  35"; // 前两个空格a = stoi(str, &pos); // 会舍弃空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "  -12ab35";// 前两个空格a = stoi(str, &pos);// 会舍弃空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoi(str);cout << "a = " << a << endl; //a = 123str = "0x123";a = stoi(str);cout << "a = " << a << endl; //a = 0return 0;
}

 stoi() 函数将指定转换字符串以16进制转10进制用法

#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{int a;size_t pos = 0;string str;str = "0x123";a = stoi(str, NULL, 16); //base = 16,指定十六进制cout << "a = " << a << endl; //a = 291str = "0x123";a = stoi(str, NULL, 0); //base = 0,自动检测数值进制cout << "a = " << a << endl; //a = 291str = "-12";a = stoi(str, &pos, 16); //-(2 + 1*16)cout << "a = " << a << endl; //a = -18cout << "pos = " << pos << endl; //pos = 3str = "12";a = stoi(str, &pos, 16); //2 + 1*16cout << "a = " << a << endl; //a = 18cout << "pos = " << pos << endl; //pos = 2str = "  -12  35"; a = stoi(str, &pos, 16); //会舍弃空白符cout << "a = " << a << endl; //a = -18cout << "pos = " << pos << endl; //pos = 5str = "  -ab";a = stoi(str, &pos, 16); //-(11 + 10*16)cout << "a = " << a << endl; //a = -171cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoi(str, NULL, 16); //(3 + 2*16 + 1*16*16)cout << "a = " << a << endl; //a = 291return 0;
}

异常
如果无法执行转换,则抛出invalid_argument异常。
如果读取的值超出int的可表示值范围,则抛出out_of_range异常。
无效的idx会导致未定义的行为。

2.stoll() 函数

long long stoll(const std::string& str, std::size_t* pos = 0, int base = 10);

功能:将字符串str转成 long long 整数
参数:
str:字符串
pos:存储将字符串 str 转成 long long 整数,处理了 str 中字符的个数的地址,默认为 NULL
base:进制,10:十进制,8:八进制,16:十六进制,0:则自动检测数值进制,str 是 0 开头为八进制,str 是 0x 或 0X 开头是十六进制,默认为十进制

stoll() 函数指定转换字符串为十进制用法
#include <iostream>
#include <string>
using namespace std;int main(int argc, char *argv[])
{long long a;size_t pos = 0;string str;str = "-1235";a = stoll(str);cout << "a = " << a << endl; //a = -1235str = "1235";a = stoll(str);cout << "a = " << a << endl; //a = 1235str = "  -12  35"; a = stoll(str, &pos); //会舍弃空白符cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "  -12ab35";a = stoll(str, &pos);cout << "a = " << a << endl; //a = -12cout << "pos = " << pos << endl; //pos = 5str = "0123";a = stoll(str);cout << "a = " << a << endl; //a = 123str = "0x123";a = stoll(str);cout << "a = " << a << endl; //a = 0return 0;
}

对于stoi可能超出范围的字符串,不能用stoi(str) < INT_MAX去限制,而应该用范围更大的stoll先判断
 

http://www.lryc.cn/news/196916.html

相关文章:

  • 【汇编语言特别篇】DOSBox及常用汇编工具的详细安装教程
  • 【牛客网刷题(数据结构)】:环形链表的约瑟夫问题
  • 虾皮印尼买家号如何注册
  • SpringBoot WebService服务端客户端使用教程
  • 【Python 千题 —— 基础篇】字符串长度
  • AIGC - 入门向量空间模型
  • python中使用xml.dom.minidom模块读取解析xml文件
  • 计算机网络第一章补充整理(计算机网络体系结构)
  • 2023_Spark_实验十七:导入招聘大数据(项目)
  • 小程序无感刷新
  • Unity C#随笔:简述String和StringBuilder的区别
  • 图论相关算法
  • Python人工智能需要学什么
  • Java 获取请求真实IP
  • Python突破浏览器TLS/JA3 指纹
  • web安全之XSS攻击
  • 【技巧】如何设置Excel表只输入固定内容?
  • 手机抬手亮屏解锁,用到了哪些硬件?
  • AI大模型高速发展,Web3还远吗?
  • CSS 滚动驱动动画 animation-range
  • 快速学习MyBatisPlus
  • ElasticsearchRestTemplate 和ElasticsearchRepository 的使用
  • Typora +Picgo 搭建个人笔记
  • 八、K8S之HPA自动扩缩容
  • 损失函数总结(二):L1Loss、MSELoss
  • 力扣(LeetCode)2530. 执行 K 次操作后的最大分数(C++)
  • C# 快速简单反射操作
  • 【python高级】设计模式、类工厂、对象工厂
  • Flink的算子列表状态的使用
  • 使用 Github Actions 工作流自动部署 Github Pages