我是靠谱客的博主 儒雅墨镜,最近开发中收集的这篇文章主要介绍关于string转int、float、double常用方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需求:如上图为已经安装内存为8589934592Byte,字符串格式为string,需将其转换为GB显示给用户,格式依然为string;

问题:

//前部代码省略,通过命令行获取到str,这里直接将结果赋值给str
string str = "8589934592";
int n = atoi(str.c_str());
n=n/(1024*1024*1024);
char p[100]={0};
itoa(n,p,10);
str=p;
cout<<p<<endl;//输出结果为1,为什么?

分析:

通过单步调试,发现int越界,atoi处已经越界,int范围“-2147483648~2147483647”(32位),可看出最大2开头十位数,然而实际已经8开头十位数了,然而编译器并没有报错,直接给最大数,运算后为1

解决办法:

1、变量定义成float类型;

2、string转int用sscanf;

3、int转string用sprintf;

TIP:1、int超过十位数建议预判越界问题;

          2、sprintf和sscanf在C++功能很强大,在某些情况下远远超过atoi等这类。

 

最后

以上就是儒雅墨镜为你收集整理的关于string转int、float、double常用方法的全部内容,希望文章能够帮你解决关于string转int、float、double常用方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部