Linux下c++中的atoi、atol、atoll、atof函数调用实例

本文中调用的四个函数如下:

atoi函数:将字符串转化为int类型变量

atol函数:将字符串转化为long类型变量

atoll函数:将字符串转化为long long类型变量

atof函数:将字符串转化为double类型变量

这些函数的转化过程,都是将一个字符串的可读部分取到变量中

遇到不可读的部分,则直接终止读取

调用示例:

#include <stdio.h>
#include <stdlib.h>

#define Seperate(); printf("\n=============\n\n");

int main()
{
    Seperate();

    //atoi
    printf("atoi: string to integer\n");
    const char* s00 = "1234567890";
    printf("%s -> %d\n", s00, atoi(&s00[0]));    
    const char* s01 = "123.4";
    printf("%s -> %d\n", s01, atoi(&s01[0]));
    const char* s02 = "xyz";
    printf("%s -> %d\n", s02, atoi(&s02[0]));
    const char* s03 = "1234xyz";
    printf("%s -> %d\n", s03, atoi(&s03[0]));

    Seperate();

    //atol
    printf("atol: string to long\n");
    const char* s10 = "1234567890123";
    printf("%s -> %ld\n", s10, atol(&s10[0]));    
    const char* s11 = "123.4";
    printf("%s -> %ld\n", s11, atol(&s11[0]));
    const char* s12 = "xyz";
    printf("%s -> %ld\n", s12, atol(&s12[0]));
    const char* s13 = "1234xyz";
    printf("%s -> %ld\n", s13, atol(&s13[0]));
    
    Seperate();    

    //atoll
    printf("atoll: string to long long\n");
    const char* s20 = "1234567890123";
    printf("%s -> %lld\n", s20, atoll(&s20[0]));    
    const char* s21 = "123.4";
    printf("%s -> %lld\n", s21, atoll(&s21[0]));
    const char* s22 = "xyz";
    printf("%s -> %lld\n", s22, atoll(&s22[0]));
    const char* s23 = "1234xyz";
    printf("%s -> %lld\n", s23, atoll(&s23[0]));    

    Seperate();

    //atof
    printf("atof: string to double\n");
    const char* s30 = "1234567890";
    printf("%s -> %lf\n", s30, atof(&s30[0]));    
    const char* s31 = "123.4";
    printf("%s -> %lf\n", s31, atof(&s31[0]));
    const char* s32 = "xyz";
    printf("%s -> %lf\n", s32, atof(&s32[0]));
    const char* s33 = "1234xyz";
    printf("%s -> %lf\n", s33, atof(&s33[0]));    

    Seperate();
    
    return 0;
}

运行效果:

END

时间: 2024-08-02 11:04:17

Linux下c++中的atoi、atol、atoll、atof函数调用实例的相关文章

dos2unix,去掉Linux下文件中的^M

Windows系统下使用VS2010编写好的CPP文件,想放到Linux上进行编译.发现Linux上文件中的每行代码末尾都跟着^M这个符号. 为什么同一份文件在windows上和Linux上显示的不一样呢?原来是由于DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致造成的. 对于回车符的定义:windows:0D0Aunixlinux: 0AMAC: 0D Linux下专门有两个工具可以互换Windows格式和Linux格式,分别是dos2unix和unix2dos 那么,如何去除L

linux下 vi中[noeol]以及出现 feff 的问题

"uptime.py" [noeol] 69L, 2311C"system/uptime.py" 69L, 2312C 'noeol' 就是 'no end-of-line', 即“没有行末结束符” 使用cat -A 命令可以看到两个文件的不同之处在于最后一行是否有换行符 cat -A uptime.pyif __name__ == '__main__':$    uptime = uptime()$    print(uptime)$[email protecte

linux下php中找不到php配置文件php.ini的解决方法

自己编译安装的php经常会遇上这种问题,找不到php.ini.可以按照如下方法解决: 首先需要说明的是,如果你的php是编译安装的,那么默认是没有php.ini的,你必须自行去源码包里边拷贝.运行phpinfo()命令可以看到php指定的配置文件路径,把配置文件放到这个路径中即可. linux下php中找不到php配置文件php.ini的解决方法

Linux下shell中case命令详解(常规的break、无条件继续和有条件继续)

linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂. 1.强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式. 2.复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break).unconditional follow up(无条件继续)和conditional follow up(有条件继续). 这篇文章的重点是上面的第2点. case的无条件继续和有条件继续是b

Linux下QT中执行shell命令

当需要在QT中执行shell命令时可以利用以下方法: (1)首先包含头文件: #include <QProcess> (2)执行shell命令: QProcess::execute("ls"); ///////////////////// #include  <QProcess> void Widget:on_pushButton_clicked() { //* system("ls");//调用LINUX C函数库中的system(cons

[转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

[From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952771 我的理解是,如果出现如题所描述的问题,这是因为使用了不同的shell程序和对应的stty设置对应关系所综合作用的结果. 这是/bin/sh里面stty -a命令输出的信息: $ stty -a speed 38400 baud; rows 43; columns 209; line = 0;

解决Linux下gulp中events.js:72的问题

晚上在Linux下搭建环境,代码都下好了,gulp也在全局装好了,按照在Windows下的习惯,直接在目录下敲gulp,结果抛出异常了. 开始还以为是权限问题,用了sudo发现没用,就去看了看gulpfile.js,内容如下: 'use strict'; var gulp = require('gulp'); var g = require('gulp-load-plugins')({lazy: false}); var inject = require('gulp-inject'); var 

Linux 下shell中exec解析

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息.       bash shell的命令分为两类:外部命令和内部命令. 外部命令是通过系统调用或独立的程序实现的,如sed.awk等等. 内部命令是由特殊的文件格式(.def)所实现,如cd.pwd等 fork是linux的系统调用,用来创建子进程(child process). 子进程是父进程(parent process)的一个

win&amp;linux下path中%%与$ 以及;与:区别,

%%是windows平台下取环境变量的符号,你写%JAVA_HOME%,就表示是取JAVA_HOME=....的这个值,不写就是JAVA_HOME这个字符串 linux平台下是$JAVA_HOME path路径中windows用;表示并列例如 ClassPath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 中间的.表示当前路径 PATH=%JAVA_HOME%\bin;%PATH% linux用:表示并列 export PATH=$PAT