91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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

c++
小樊
82
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
绵竹市| 正蓝旗| 扶沟县| 涞源县| 天津市| 墨竹工卡县| 东乡| 精河县| 海淀区| 腾冲县| 怀宁县| 东海县| 洱源县| 沽源县| 饶平县| 龙胜| 饶河县| 漳浦县| 张家界市| 清涧县| 忻州市| 铅山县| 平远县| 仁怀市| 重庆市| 清苑县| 延安市| 天峻县| 梁平县| 蓬安县| 慈溪市| 唐海县| 鹤庆县| 渑池县| 齐齐哈尔市| 屏南县| 新绛县| 安宁市| 农安县| 镇远县| 昔阳县|