通过cplusplus网站学习函数用法演示

简介: 在我们学习c语言或者c++时,总会遇到一些我们熟悉的库函数,这时候就需要我们通过cplusplus网站搜索学习,下面就由我为大家演示一下如何通过这个网站的页面学习函数的使用方法吧!

在我们学习c语言或者c++时,总会遇到一些我们熟悉的库函数,这时候就需要我们通过cplusplus网站搜索学习,下面就由我为大家演示一下如何通过这个网站的页面学习函数的使用方法吧!


atoi - C++ Reference (cplusplus.com)


我们今天要学习的是atoi库函数。

首先我们来看这个函数的参数和返回类型

函数的返回类型为int,函数接收的参数类型为const char* 类型。

接着看下面这一大段文字:

我们通过翻译,我们可以了解到,atoi 是一个标准的库函数,它的全称是 "ASCII to Integer",用于将 ASCII 字符串转换成整数。


这个函数会解析 ptr 指向的字符串,直到遇到无法转换为数字的字符为止,然后将解析得到的数字返回。如果 ptr 无法被解析为有效的整数(例如,它是一个空字符串,或者它不包含任何数字),则函数返回 0。

再看看它的参数和返回值:

C-string 以整数的表示形式开头。


成功后,该函数将转换后的整数作为值返回。

如果转换后的值超出 的可表示值范围,则会导致未定义的行为。

#include <stdio.h>  
#include <stdlib.h>  
 
int main() {  
    const char *str = "12345";  
    int num = atoi(str);  
    printf("The number is: %d\n", num);  
    return 0;  
}

在这个例子中,字符串 "12345" 被转换为整数 12345,然后打印出来。

然后,我们可以通过一些案例,具体研究一下这个函数的用法:

通过输入1234字符串,我们发现输出结果转换成了数字:

在这个例子中,字符串 "12345" 被转换为整数 12345,然后打印出来。

然后,我们可以通过一些案例,具体研究一下这个函数的用法:

通过输入1234字符串,我们发现输出结果转换成了数字:

接着我们在前面添上正负号试试:

我们会发现这个函数会读取字符串前面的正负号。

那如果字符串前面有空格呢?

正如你所见,这个函数会把空格过滤掉。

那如果添加上一些字母呢,还会不会被转换呢?

并不会把字母打印出来。

那如果是在中间加上空格呢?

这时后面的数字都消失了。

我们输入一个很大或者很小的数字时:

会把这个很大或很小的数值转换为最大或最小的数字。

在传递空值时:

接下来,我们来模拟实现一个 atoi 函数。这个函数需要处理一些边界情况,比如空指针空字符串跳过前导空格正负号等。此外,我们还需要处理可能的溢出情况。

对于跳过前导空格,我们需要下面这样一个库函数:

isdigit用来判断传入的是不是数字字符

下面我们来模拟实现以下这个函数:

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<ctype.h>
enum State
{
  VAILD,
  INVAILD
}state = INVAILD;
int MyAtoi(const char* str)
{
  assert(str != NULL);
  if (*str == '\0')
  {
    return 0;
  }
  while (isspace(*str))//isspace返回值不为0,代表是空格
  {
    str++;
  }
  //代码走到这里之后,str遇到的一定不是空格,有可能是正负号
  int flag = 1;
  if (*str == '+')
  {
    flag = 1;
    str++;
  }
  else if (*str == '-')
  {
    flag = -1;
    str++;
  }
  long long ret = 0;
  while (*str != '\0')
  {
    if (isdigit(*str))
    {
      //是数字字符 把字符1变成数字1->把字符'1'减去'0'得到的就是数字1
      ret = ret * 10 + (*str - '0') * flag;
    }
    else
    {
      //不是数字字符
      return (int)ret;
    }
    str++;//让指针继续往后走
  }
  //解决最大最小值问题
  if (ret > INT_MAX)
  {
    ret = INT_MAX;
  }
  if (ret < INT_MIN)
  {
    ret = INT_MIN;
  }
  //正常转换和非正常转换的区别在于一个走到斜杠0,一个没有
  if (*str == '\0')
  {
    state = VAILD;
  }
  return (int)ret;
}
int main()
{
  int ret = MyAtoi("123 ");
  if (state == VAILD)
  {
    printf("合法转换:%d\n", ret);
  }
  else
  {
    printf("不合法转换:%d", ret);
  }
  return 0;
}
相关文章
|
17天前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
21 2
|
5月前
|
Python
Python函数学习应用案例详解
【4月更文挑战第7天】学习Python函数的应用,包括计算两数之和、判断偶数、计算阶乘、生成斐波那契数列及反转字符串。示例代码展示了函数接收参数和返回结果的功能,如`add(a, b)`求和,`is_even(num)`判断偶数,`factorial(n)`计算阶乘,`fibonacci(n)`生成斐波那契数,以及`reverse_string(s)`反转字符串。
34 1
|
5月前
|
安全 C#
c#学习相关系列之as和is的相关用法
c#学习相关系列之as和is的相关用法
|
5月前
|
存储 C++
【C++】function包装器全解(代码演示,例题演示)
【C++】function包装器全解(代码演示,例题演示)
|
5月前
|
机器学习/深度学习 算法 索引
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
59 0
文件操作函数——大全(简洁,全面,附代码演示)
文件操作函数——大全(简洁,全面,附代码演示)
|
索引 Python
【Python】高级变量通关教程下篇(字符串与切片专题详解)(下)
文章目录 前言 1 字符串说明 2 字符串的常见操作 2.1 字符串中的常见方法总览 2.2 字符串的长度、次数与位置统计 2.3 判断字符串 2.4 字符串的查找和替换 2.5 去除字符串中的空白字符 2.6 字符串的拆分和拼接 3 切片 3.1 切片的概念与说明 3.2 切片的使用——以字符串为例 4 本文配套练习题* 4.1 练习一 4.2 练习二
【Python】高级变量通关教程下篇(字符串与切片专题详解)(下)
|
存储 索引 Python
【Python】高级变量通关教程下篇(字符串与切片专题详解)(上)
文章目录 前言 1 字符串说明 2 字符串的常见操作 2.1 字符串中的常见方法总览 2.2 字符串的长度、次数与位置统计 2.3 判断字符串 2.4 字符串的查找和替换 2.5 去除字符串中的空白字符 2.6 字符串的拆分和拼接 3 切片 3.1 切片的概念与说明 3.2 切片的使用——以字符串为例 4 本文配套练习题* 4.1 练习一 4.2 练习二
【Python】高级变量通关教程下篇(字符串与切片专题详解)(上)
|
存储 算法 C++
C++多元组tuple使用方法?你熟悉吗?快来看看吧
C++多元组tuple使用方法?你熟悉吗?快来看看吧
413 0
|
索引 Python
小学生三分钟学会Python程序语法元素分析~总结笔记
小学生三分钟学会Python程序语法元素分析~总结笔记
176 0
小学生三分钟学会Python程序语法元素分析~总结笔记