pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

C++中字符串與整型及浮點型轉換全攻略

C++算法刷題等過程中經常會遇到字符串與數字類型的轉換,在這其中雖然樸素的算法有不少,但是對于double等類型還是可以說遇到一些麻煩,所以今天就來說說使用C++標準庫中的函數實

首先請出今日主角:stdlib.h (YYDS)

這個庫包含有隨機數,abs等許多通用函數,當然也有類型的轉換

下面我們一點點來看如何完成格式轉換

一、string 和 char []

1. string 轉 char []

string 是一個類,而 char [] 的變量名本質上是一個地址,咋一看這倆好像不太好轉換。

但是事實上我們正是可以通過地址的方式將string 中的值整體地遷移到 char [] 中:


#include <string.h>
#include <iostream>
using namespace std;
int main() {
    string s = "123.123";
    char a[101];
    strcpy(a, s.c_str());
    // strcpy(a, s.data());  // 與上方語句等價,任選其一即可
    cout << a << endl;

    // 雖然傳遞的是地址,但是程序會將內容直接復制到 char [] 中,所以此處改變s不影響a
    s = "456.456";
    cout << a << endl;

    return 0;
}

輸出內容:

123.123
123.123

2. char [] 轉 string

代碼:


#include <bits/stdc++.h>
using namespace std;
int main() {
    char a[100] = "123.123";
    string s = a;
    cout << s;
    return 0;
}

二、char [] 與數字互轉

1. char [] 轉整型和浮點型


#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "123.123";
    int a_int = atoi(a_chars);
    double a_double = atof(a_chars);
    cout << a_int << endl;
    cout << a_double << endl;

    return 0;
}

輸出:

123
123.123

用到了頭文件 stdlib.h 中的 atoi() atof() 兩個函數

當然這兩個函數作為標準庫成員,除了可以像上面這段代碼這樣完成強制類型轉換,處理一些特殊情況也是完全OK


#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "00123";
    int a_int = atoi(a_chars);
    cout << a_int << endl;

    char b_chars[101] = "-013.470";
    double b_double = atof(b_chars);
    cout << b_double << endl;

    return 0;
}

輸出:

123
-13.47

如果數字較大需要轉 long long long ,則使用的函數為 atol() atoll() ,用法與 atoi() 相同:


#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    char a_chars[101] = "00123";
    long a_long = atol(a_chars);  // long
    cout << a_long << endl;
    long long a_long_long = atoll(a_chars);  // long long
    cout << a_long_long << endl;

    return 0;
}

2. 整型和浮點型 轉char []


#include <stdio.h>
using namespace std;
int main() {
    char a[1001];
    sprintf(a, "%.10lf", 3.1415926535);
    printf("%s", a);

    return 0;
}

絕對沒有比這更香的操作了

printf 輸出到終端,sprintf 可以直接輸出到字符串中。如果字符串中有內容會覆蓋寫入,類似于寫文件

另外 to_string() 函數可以勝任這項工作

警告:這個函數沒有測試過比賽是否可用,請謹慎選擇!!


#include <iostream>
using namespace std;
int main() {
    string s = to_string(123);
    cout << s << endl;
    return 0;
}

3. 整型轉 char [] (特殊函數實現)

警告!下面這段代碼只有win能用,比賽都是不行的!!

看代碼:


#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    int INT = 123;
    long LONG = 123456;
    long long LONG_LONG = 123456789;
    char s[16] = {0};
    itoa(INT, s, 10);  // 要轉換的數,存放結果的字符串,結果進制數(下同)
    cout << s << endl;
    ltoa(LONG, s, 10);
    cout << s << endl;
    lltoa(LONG_LONG, s, 10);  // 這里編譯時有warning,原因不詳
    cout << s << endl;

    return 0;
}

輸出:

123
123456
123456789

atoi() atol() atoll() 反轉一下就有了 itoa() ltoa() lltoa() , 還是比較好記的。

itoa() 為例,他接受三個參數,其中第三個表示輸出字符串中使用的進制。這又可以在進制轉換上幫我們大忙!


#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    int INT = 12;
    char s[16] = {0};
    itoa(INT, s, 2);  // 12轉二進制
    cout << s << endl;
    itoa(INT, s, 8);  // 轉八進制
    cout << s << endl;
    itoa(INT, s, 16);  // 十六進制
    cout << s << endl;

    return 0;
}

輸出:

1100
14
c

再次警告!上面這段代碼只有win能用,比賽都是不行的!!

提一嘴:文中用到了 s.c_str() 的寫法。如果你需要使用 printf() 輸出 string 類型的字符串,也需要這樣:


#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
    string str = "123";
    printf("str:%s", str.c_str());
    // printf("str:%s", str);  // 這樣寫真的不行
 
    return 0;
}

到此這篇關于C++中字符串與整型及浮點型轉換全攻略的文章就介紹到這了,更多相關C++中字符串與整型及浮點型轉換全內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

本篇文章是對C/C++浮點數在內存中的存儲方式進行了詳細的分析介紹,需要的朋友參考下,希望能夠給你帶來幫助
主站蜘蛛池模板: 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 深圳活动策划公司|庆典策划|专业公关活动策划|深圳艺典文化传媒 重庆中专|职高|技校招生-重庆中专招生网 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 天津拓展_天津团建_天津趣味运动会_天津活动策划公司-天津华天拓展培训中心 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | ORP控制器_ORP电极价格-上优泰百科 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 查分易-成绩发送平台官网 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 |