中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中字符串與整型及浮點型轉換的示例分析

發布時間:2021-09-13 13:04:08 來源:億速云 閱讀:122 作者:小新 欄目:開發技術

這篇文章主要介紹了C++中字符串與整型及浮點型轉換的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、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++中字符串與整型及浮點型轉換的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

宜川县| 庄河市| 确山县| 密山市| 达日县| 甘孜县| 克东县| 平塘县| 丘北县| 屯门区| 盐源县| 曲松县| 周口市| 石门县| 永泰县| 响水县| 建昌县| 且末县| 开封县| 商南县| 夏邑县| 蕲春县| 沧州市| 长武县| 仪征市| 合山市| 武山县| 固镇县| 泰安市| 西安市| 合川市| 洞口县| 安国市| 房山区| 龙南县| 遂溪县| 德清县| 翁牛特旗| 商南县| 拉萨市| 辽阳市|