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

溫馨提示×

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
波密县| 石林| 绥宁县| 台湾省| 哈巴河县| 略阳县| 宣化县| 林芝县| 安化县| 青阳县| 托克逊县| 泌阳县| 临夏县| 福建省| 屏山县| 巩留县| 宁安市| 江口县| 房产| 郸城县| 青河县| 乌兰察布市| 三原县| 神池县| 宜阳县| 安丘市| 松桃| 新竹市| 普兰县| 乐山市| 莱芜市| 顺昌县| 仙居县| 蒲城县| 保山市| 微山县| 迁安市| 秦安县| 崇明县| 昭通市| 岫岩|