关于string转int、float、double常用方法
生活随笔
收集整理的這篇文章主要介紹了
关于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常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wmic 获取运行内存大小
- 下一篇: QT最方便的LOG库使用Easylogg