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

溫馨提示×

stringstream怎樣處理異常情況

小樊
84
2024-10-16 14:56:17
欄目: 編程語言

stringstream 是 C++ 中的一個類,它位于 <sstream> 頭文件中。這個類允許你使用流操作符 <<>> 來讀取和寫入字符串。在處理異常情況時,stringstream 可以幫助你以結構化的方式解析字符串。

以下是一些使用 stringstream 處理異常情況的示例:

  1. 檢查讀取操作是否成功: 當你使用 >> 操作符從 stringstream 中讀取數據時,如果讀取失敗,該操作符會設置 failbit。你可以使用 fail() 成員函數來檢查是否設置了 failbit
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::stringstream ss("123 456 789");
    int a, b, c;

    ss >> a >> b >> c;

    if (ss.fail()) {
        std::cerr << "讀取失敗!" << std::endl;
    } else {
        std::cout << "讀取成功: a="<< a << ", b="<< b << ", c="<< c << std::endl;
    }

    return 0;
}
  1. 處理非數字字符: 如果你嘗試從 stringstream 中讀取一個不存在的值,>> 操作符會設置 failbit。你可以使用 ignore() 成員函數來忽略無效字符,并繼續讀取。
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::stringstream ss("abc 123 def 456");
    int a, b;
    std::string s;

    ss >> s >> a; // 讀取字符串 "abc" 和整數 123
    ss.ignore(std::numeric_limits<std::streamsize>::max(), ' '); // 忽略空格
    ss >> b; // 讀取整數 456

    if (ss.fail()) {
        std::cerr << "讀取失敗!" << std::endl;
    } else {
        std::cout << "讀取成功: a="<< a << ", b="<< b << std::endl;
    }

    return 0;
}
  1. 自定義錯誤處理: 你可以通過重載 <<>> 操作符來自定義錯誤處理邏輯。例如,你可以為 stringstream 類創建一個自定義的派生類,并在其中實現自己的錯誤處理機制。
#include <iostream>
#include <sstream>
#include <string>

class MyStream : public std::stringstream {
public:
    using std::stringstream::operator>>;

    void checkError() {
        if (fail()) {
            throw std::runtime_error("讀取失敗!");
        }
    }
};

int main() {
    MyStream ss("123 456 789");
    int a, b, c;

    ss >> a >> b >> c;
    ss.checkError();

    std::cout << "讀取成功: a="<< a << ", b="<< b << ", c="<< c << std::endl;

    return 0;
}

在這個示例中,我們創建了一個名為 MyStream 的自定義類,它繼承自 std::stringstream。我們重載了 >> 操作符,并在其中調用了 checkError() 函數來檢查是否發生了讀取錯誤。如果發生錯誤,我們拋出一個 std::runtime_error 異常。在主函數中,我們使用 try-catch 塊來捕獲并處理這個異常。

0
湛江市| 夏津县| 桃园县| 宜兰市| 长岛县| 会东县| 涞水县| 石门县| 罗城| 武城县| 禹城市| 镇康县| 普兰县| 绥棱县| 青田县| 义乌市| 新昌县| 收藏| 阿克陶县| 石景山区| 秀山| 清水县| 波密县| 达州市| 南陵县| 峨边| 忻城县| 吕梁市| 曲麻莱县| 剑阁县| 霍山县| 宜章县| 西乌珠穆沁旗| 寿阳县| 江门市| 赤城县| 信丰县| 凤山市| 洪泽县| 新宁县| 威远县|