首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C/C++ 常用數據類型轉換總表

     編輯:關於C++

整理 Windows/Linux 下 C/C++ 常見類型轉換代碼片段,涵蓋整數、浮點數、字串、字元陣列、枚舉等互轉,方便查閱。

轉換代碼匯總


#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>

int main() {
    // 1. int -> char[]
    int tmp1 = 100; char ch1[15]; sprintf(ch1, "%d", tmp1);
    std::cout << ch1 << std::endl;

    // 2. int -> string
    int tmp2 = 111; char ch2[15]; sprintf(ch2, "%d", tmp2);
    std::string str2 = std::string(ch2);
    std::cout << str2 << std::endl;

    // 3. int -> enum
    enum Enum3 { A, B }; int tmp3 = 222;
    Enum3 val3 = static_cast<Enum3>(tmp3);
    std::cout << val3 << std::endl;

    // 4. char[] -> string
    char arr4[] = "this is a sample";
    std::string str4 = std::string(arr4);
    std::cout << str4 << std::endl;

    // 5. char -> int ('0'~'9')
    char ch5 = '8'; int val5 = ch5 - '0';
    std::cout << val5 << std::endl;

    // 6. char[] -> int
    char arr6[] = "12345"; int tmp6; sscanf(arr6, "%d", &tmp6);
    std::cout << tmp6 << std::endl;

    // 7. char* -> int
    char* pch7 = "444"; int tmp7 = atoi(pch7);
    std::cout << tmp7 << std::endl;

    // 8. char* -> float
    char* pch8 = "55.5"; float tmp8 = (float)atof(pch8);
    std::cout << tmp8 << std::endl;

    // 9. char* -> double
    char* pch9 = "66.666"; double tmp9 = atof(pch9);
    std::cout << tmp9 << std::endl;

    // 10. float -> char[]
    float tmp10 = 11.11f; char ch10[20]; sprintf(ch10, "%f", tmp10);
    std::cout << ch10 << std::endl;

    // 11. int -> char*
    int tmp11 = 777; char ch11[20]; sprintf(ch11, "%d", tmp11);
    char* pch11 = ch11; std::cout << pch11 << std::endl;

    // 12. double -> char[]
    double tmp12 = 8.888; char arr12[20]; sprintf(arr12, "%f", tmp12);
    std::cout << arr12 << std::endl;

    // 13. char* -> string
    char* pch13 = "hello, world"; std::string str13 = std::string(pch13);
    std::cout << str13 << std::endl;

    // 14. string -> char[]
    std::string str14 = "dog, cat"; char arr14[255];
    strncpy(arr14, str14.c_str(), sizeof(arr14));
    arr14[sizeof(arr14)-1] = 0; std::cout << arr14 << std::endl;

    // 15. string -> const char*
    std::string str15 = "ha ha"; const char* pch15 = str15.c_str();
    std::cout << pch15 << std::endl;

    // 16. float -> int (截斷/四捨五入)
    float ftmp16 = 99.99f; int tmp16 = static_cast<int>(ftmp16); // 或 +0.5 四捨五入
    std::cout << tmp16 << std::endl;

    return 0;
}

注意事項

  • sprintf/sscanf 需確保緩衝區足夠大,防止溢位。
  • atoi/atof 錯誤輸入行為未定義,建議用 strtol/strtod 做嚴格檢查。
  • static_cast 用於相關類型轉換,reinterpret_cast 用於指標/整數強轉。
  • 字串轉字元陣列務必手動加結尾 \0。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved