溫馨提示×

如何在c++中使用atof函數處理多種進制

c++
小樊
99
2024-09-25 06:27:15
欄目: 編程語言

在C++中,atof函數是用于將字符串轉換為浮點數的。然而,atof函數本身并不支持直接處理多種進制。你需要先將字符串轉換為統一的進制,然后再使用atof函數將其轉換為浮點數。

以下是一個示例,展示了如何將一個表示十六進制或十進制數的字符串轉換為浮點數:

#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>

bool isHex(const std::string& str) {
    for (char ch : str) {
        if (!((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'))) {
            return false;
        }
    }
    return true;
}

float convertStringToInt(const std::string& str, bool isHex) {
    std::stringstream ss;
    if (isHex) {
        ss << std::hex << str;
    } else {
        ss << std::dec << str;
    }
    return std::stof(ss.str());
}

int main() {
    std::string input = "1a"; // 可以是十六進制或十進制
    bool isHex = isHex(input);
    float result = convertStringToInt(input, isHex);
    std::cout << "轉換結果: " << result << std::endl;
    return 0;
}

在這個示例中,我們首先定義了一個isHex函數,用于檢查輸入字符串是否為有效的十六進制數。然后,我們定義了一個convertStringToInt函數,它接受一個字符串和一個布爾值,表示字符串是十六進制還是十進制。根據這個布爾值,我們使用std::hexstd::dec操縱符將字符串轉換為整數,然后使用std::stof函數將其轉換為浮點數。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女