最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中字符串與整型及浮點(diǎn)型轉(zhuǎn)換全攻略

 更新時(shí)間:2021年09月13日 11:29:46   作者:異想之旅  
C++算法刷題等過(guò)程中經(jīng)常會(huì)遇到字符串與數(shù)字類型的轉(zhuǎn)換,在這其中雖然樸素的算法有不少,但是對(duì)于double等類型還是可以說(shuō)遇到一些麻煩,所以今天就來(lái)說(shuō)說(shuō)使用C++標(biāo)準(zhǔn)庫(kù)中的函數(shù)實(shí)現(xiàn)這些功能。感興趣的小伙伴一起參與閱讀吧

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

這個(gè)庫(kù)包含有隨機(jī)數(shù),abs等許多通用函數(shù),當(dāng)然也有類型的轉(zhuǎn)換

下面我們一點(diǎn)點(diǎn)來(lái)看如何完成格式轉(zhuǎn)換

一、string 和 char []

1. string 轉(zhuǎn) char []

string 是一個(gè)類,而 char [] 的變量名本質(zhì)上是一個(gè)地址,咋一看這倆好像不太好轉(zhuǎn)換。

但是事實(shí)上我們正是可以通過(guò)地址的方式將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());  // 與上方語(yǔ)句等價(jià),任選其一即可
    cout << a << endl;

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

    return 0;
}

輸出內(nèi)容:

123.123
123.123

2. char [] 轉(zhuǎn) string

代碼:

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

二、char [] 與數(shù)字互轉(zhuǎn)

1. char [] 轉(zhuǎn)整型和浮點(diǎn)型

#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() 兩個(gè)函數(shù)

當(dāng)然這兩個(gè)函數(shù)作為標(biāo)準(zhǔn)庫(kù)成員,除了可以像上面這段代碼這樣完成強(qiáng)制類型轉(zhuǎn)換,處理一些特殊情況也是完全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

如果數(shù)字較大需要轉(zhuǎn) long long long ,則使用的函數(shù)為 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. 整型和浮點(diǎn)型 轉(zhuǎn)char []

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

    return 0;
}

絕對(duì)沒(méi)有比這更香的操作了

printf 輸出到終端,sprintf 可以直接輸出到字符串中。如果字符串中有內(nèi)容會(huì)覆蓋寫(xiě)入,類似于寫(xiě)文件

另外 to_string() 函數(shù)可以勝任這項(xiàng)工作

警告:這個(gè)函數(shù)沒(méi)有測(cè)試過(guò)比賽是否可用,請(qǐng)謹(jǐn)慎選擇!!

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

3. 整型轉(zhuǎn) char [] (特殊函數(shù)實(shí)現(xiàn))

警告!下面這段代碼只有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);  // 要轉(zhuǎn)換的數(shù),存放結(jié)果的字符串,結(jié)果進(jìn)制數(shù)(下同)
    cout << s << endl;
    ltoa(LONG, s, 10);
    cout << s << endl;
    lltoa(LONG_LONG, s, 10);  // 這里編譯時(shí)有warning,原因不詳
    cout << s << endl;

    return 0;
}

輸出:

123
123456
123456789

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

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

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

    return 0;
}

輸出:

1100
14
c

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

提一嘴:文中用到了 s.c_str() 的寫(xiě)法。如果你需要使用 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);  // 這樣寫(xiě)真的不行
 
    return 0;
}

到此這篇關(guān)于C++中字符串與整型及浮點(diǎn)型轉(zhuǎn)換全攻略的文章就介紹到這了,更多相關(guān)C++中字符串與整型及浮點(diǎn)型轉(zhuǎn)換全內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)易通訊錄

    C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)易通訊錄

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 帶你深度走入C語(yǔ)言取整以及4種函數(shù)

    帶你深度走入C語(yǔ)言取整以及4種函數(shù)

    大家都知道取整這回事,但是對(duì)于取整只有單一的認(rèn)識(shí),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言取整以及4種函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • C語(yǔ)言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實(shí)現(xiàn)

    C語(yǔ)言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實(shí)現(xiàn)

    堆就是用數(shù)組實(shí)現(xiàn)的二叉樹(shù),所以它沒(méi)有使用父指針或者子指針。堆根據(jù)“堆屬性”來(lái)排序,“堆屬性”決定了樹(shù)中節(jié)點(diǎn)的位置
    2021-11-11
  • C++中sprintf使用的方法與printf的區(qū)別分析

    C++中sprintf使用的方法與printf的區(qū)別分析

    這篇文章主要介紹了C++中sprintf使用的方法與printf的區(qū)別,實(shí)例分析了sprintf與printf的具體用法及相關(guān)注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行詳解

    C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行詳解

    這篇文章主要為大家詳細(xì)介紹了C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以了解下
    2024-01-01
  • Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出

    Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以了解一下
    2022-06-06
  • C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表

    C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個(gè)數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲(chǔ)區(qū)里,元素間的順序關(guān)系由它們的存儲(chǔ)順序自然表示
    2022-03-03
  • C語(yǔ)言中的字符串?dāng)?shù)據(jù)在C中的存儲(chǔ)方式

    C語(yǔ)言中的字符串?dāng)?shù)據(jù)在C中的存儲(chǔ)方式

    這篇文章主要介紹了C語(yǔ)言中的字符串?dāng)?shù)據(jù)在C中的存儲(chǔ)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 基于c++11的event-driven library的理解

    基于c++11的event-driven library的理解

    這篇文章主要介紹了基于c++11的event-driven library的理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++使用HTTP庫(kù)和框架輕松發(fā)送HTTP請(qǐng)求

    C++使用HTTP庫(kù)和框架輕松發(fā)送HTTP請(qǐng)求

    使用C++編程發(fā)送HTTP請(qǐng)求通常需要使用第三方的HTTP庫(kù)或框架,本文主要介紹了C++使用HTTP庫(kù)和框架輕松發(fā)送HTTP請(qǐng)求,感興趣的可以了解一下
    2023-12-12

最新評(píng)論

姜堰市| 花莲市| 柏乡县| 岐山县| 汨罗市| 廊坊市| 济源市| 安塞县| 伊金霍洛旗| 汝城县| 元谋县| 保德县| 调兵山市| 岚皋县| 教育| 大同县| 永和县| 枣强县| 文安县| 温宿县| 普格县| 宝坻区| 泽库县| 宜黄县| 东乌珠穆沁旗| 金堂县| 西昌市| 阳城县| 荃湾区| 关岭| 阳朔县| 伊吾县| 渭南市| 长丰县| 原平市| 温泉县| 潜山县| 阜新市| 永州市| 武强县| 许昌县|