亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
富锦市| 阿鲁科尔沁旗| 珲春市| 武夷山市| 钦州市| 宁化县| 鹤岗市| 区。| 栾川县| 通州区| 英山县| 崇信县| 香河县| 本溪市| 云浮市| 凤山县| 吉木乃县| 沧州市| 冀州市| 呼和浩特市| 正阳县| 井冈山市| 丽水市| 南汇区| 天镇县| 宁夏| 湘西| 区。| 栾川县| 延边| 青川县| 密山市| 蒙山县| 吉林市| 荔浦县| 辽阳县| 安丘市| 邯郸县| 江北区| 吉木萨尔县| 青冈县|