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

溫馨提示×

c++ stod異常如何處理

c++
小樊
81
2024-11-25 15:14:52
欄目: 編程語言

std::stod 是 C++ 標準庫中的一個函數,用于將字符串轉換為 double 類型的浮點數

  1. 檢查輸入字符串是否有效:確保輸入的字符串表示一個有效的浮點數。如果字符串無法轉換為浮點數,std::stod 會拋出 std::invalid_argument 異常。你可以使用 std::istringstreamstd::stod 的異常處理機制來捕獲這個異常。
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>

int main() {
    std::string input = "abc"; // 無效的浮點數表示
    std::istringstream iss(input);

    try {
        double value = std::stod(iss);
        std::cout << "轉換成功: " << value << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cerr << "捕獲到無效參數異常: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "捕獲到超出范圍異常: " << e.what() << std::endl;
    }

    return 0;
}

在這個示例中,我們嘗試將一個無效的浮點數字符串 “abc” 轉換為 double 類型。由于輸入字符串無效,std::stod 會拋出 std::invalid_argument 異常,我們通過捕獲這個異常來處理錯誤。

  1. 檢查浮點數是否在有效范圍內:std::stod 還可能拋出 std::out_of_range 異常,表示轉換后的浮點數超出了 double 類型的表示范圍。你可以使用類似的方法捕獲這個異常。
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>

int main() {
    std::string input = "1e309"; // 超出 double 范圍的值
    std::istringstream iss(input);

    try {
        double value = std::stod(iss);
        std::cout << "轉換成功: " << value << std::endl;
    } catch (const std::invalid_argument& e) {
        std::cerr << "捕獲到無效參數異常: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "捕獲到超出范圍異常: " << e.what() << std::endl;
    }

    return 0;
}

在這個示例中,我們嘗試將一個超出 double 范圍的大數 “1e309” 轉換為 double 類型。由于輸入值超出了范圍,std::stod 會拋出 std::out_of_range 異常,我們通過捕獲這個異常來處理錯誤。

0
唐山市| 博野县| 隆子县| 湛江市| 伊宁县| 景宁| 永仁县| 旺苍县| 枣阳市| 栖霞市| 屯留县| 新干县| 个旧市| 五河县| 大邑县| 凌海市| 枝江市| 南康市| 来宾市| 元朗区| 福清市| 平远县| 白玉县| 阿荣旗| 桐乡市| 施秉县| 波密县| 凤冈县| 且末县| 屏山县| 榕江县| 武威市| 万宁市| 延津县| 湟源县| 罗田县| 塔城市| 邹城市| 遂昌县| 瓮安县| 高邑县|