首页 > 编程语言 >c++中字符/串->整数

c++中字符/串->整数

时间:2024-09-22 21:52:39浏览次数:8  
标签:std 字符 int 整数 c++ isdigit stoi

char字符->整数数字:std::isdigit 用于判断某个字符是否为数字(0-9)。
字符串->数字:std::stoi 用于将字符转换为整数。

int isdigit( int ch );
//std::isdigit 接受的参数类型为 int,通常会传递字符类型(char)作为参数,但是字符会自动转换为对应的 int 值。
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);

isdigit

参数:

  • ch:一个整数类型的参数,通常是一个字符,代表需要判断的字符。

返回值:

  • 如果 ch 是数字字符('0' - '9'),则返回非零值(通常为 1)。
  • 如果 ch 不是数字字符,则返回 0。

用法:

你需要先包含 <cctype> 头文件,然后可以使用 std::isdigit 来检查一个字符是否是数字。例如:

#include <iostream>
#include <cctype> // 包含 isdigit 函数

int main() {
    char c = '5';
    if (std::isdigit(c)) {
        std::cout << c << " 是一个数字字符。" << std::endl;
    } else {
        std::cout << c << " 不是一个数字字符。" << std::endl;
    }

    return 0;
}

输出:

5 是一个数字字符。

std::stoi 是 C++ 标准库中的一个函数,用于将字符串转换为整数。它属于 <string> 头文件中的函数,函数原型如下:

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

参数:

  1. str:需要转换的字符串,它可以包含一个可解析为整数的数字。
  2. pos(可选):这是一个指向 std::size_t 的指针,用于存储转换后第一个未解析字符的位置。如果你不关心位置,可以将其设为 nullptr 或省略。
  3. base(可选):表示转换的进制,默认为 10,即将字符串解析为十进制整数。如果需要解析成其他进制(例如二进制、十六进制等),可以修改这个参数。

返回值:

  • 返回将字符串转换后的整数值。

stoi

用法:

你需要先包含 <string> 头文件,然后可以使用 std::stoi 来将字符串转换为整数。例如:

#include <iostream>
#include <string> // 包含 stoi 函数

int main() {
    std::string str = "12345";
    
    try {
        int num = std::stoi(str); // 将字符串转换为整数
        std::cout << "转换后的整数是: " << num << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cerr << "无效的数字字符串: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "数字超出范围: " << e.what() << std::endl;
    }

    return 0;
}

输出:

转换后的整数是: 12345

输出:

转换后的整数是: 123
第一个非数字字符的位置是: 3

在这个例子中,std::stoi 成功解析了字符串中的数字部分 "123",并且 pos 返回了第一个非数字字符 'a' 的位置。

标签:std,字符,int,整数,c++,isdigit,stoi
From: https://www.cnblogs.com/niumachen/p/18425976

相关文章

  • Python&C++迭代器比较
    Python&C++迭代器比较内容在Python和C++中,迭代器的概念都有类似的作用,但它们的实现方式和细节上存在一些区别。下面我们将从迭代器的定义、特性以及Python和C++中的不同点来进行对比。1.什么是迭代器?迭代器是一种对象,它允许你遍历一个集合(如列表、字典、字符串等)中......
  • C++入门——类和对象(上)
    文章目录一、类的定义1.1类的定义格式1.2访问限定符1.3类域二、实例化2.1实例化概念2.2对象大小三、this指针四、C++和C语言实现Stack栈的对比总结一、类的定义1.1类的定义格式class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分......
  • C++ 解析 RDP 协议
    远程桌面协议(RemoteDesktopProtocol,RDP)是微软开发的一种网络通信协议,用于提供远程桌面会话服务。它允许用户通过网络连接至远程计算机,并像使用本地计算机一样操作远程系统。本文档将详细探讨在C++环境中如何解析RDP协议,涵盖协议层次解析、连接过程管理、数据加密解密、......
  • 2376.统计特殊整数
    如果一个正整数每一个数位都是互不相同的,我们称它是特殊整数。给你一个正整数n,请你返回区间[1,n]之间特殊整数的数目。示例1:输入:n=20输出:19解释:1到20之间所有整数除了11以外都是特殊整数。所以总共有19个特殊整数。示例2:输入:n=5输出:5解释:1到5......
  • C++三大特性——继承性(超万字详解)
    目录前言一、封装1.封装(Encapsulation)二、继承1.构造函数的调用顺序原理:2.析构函数的调用顺序原理:3、派生类的隐藏 1.成员函数隐藏2.成员变量隐藏3.基类函数的重载隐藏三、多重继承问题1.构造函数的调用顺序2.析构函数的调用顺序3.多重继承中的命名......
  • C++中模板的初级使用函数模板(刚刚接触模板概念的小白也能明白)
    文章目录模板分类函数模板函数模板的原理函数模板基本语法——typename以及class简单的函数模板多类型模板参数class和typename的选择类模板模板分类模板的核心思想是让编译器在编译时生成适用于具体类型的代码,这个过程称为模板实例化。C++中的模板分为两种:......
  • C/C++中内存管理
    这里写目录标题C语言中动态内存管理方式:malloc/calloc/realloc/freeC++内存管理方式operatornew与operatordelete函数operatornewoperatordeletenew和delete的实现原理malloc/free和new/delete的区别C语言中动态内存管理方式:malloc/calloc/realloc/free在C语言......
  • Linux 中实现文本中所有的单词的第一个字符大写,其余字符小写
     001、[root@PC1test]#lsa.txt[root@PC1test]#cata.txt##测试数据afdfeDETFDSSFFdefexkmxnd[root@PC1test]#cata.txt|awk'{for(i=1;i<=NF;i++){$i=toupper......
  • C语言整数类型的存储空间和取值范围
    C语言整数类型的存储空间和取值范围四种整数类型char,short,int,long默认有符号,再加上无符号限制,共8种情况char//字符型,单字节,取值范围:CHAR_MIN-CHAR_MAXunsignedchar//无符号字符型,取值范围:0-UCHAR_MAXshortint//短整型,双......
  • C++从入门到起飞之——多态 全方位剖析!
    ......