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

溫馨提示×

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
临泽县| 高密市| 双桥区| 无为县| 凉山| 岑溪市| 平湖市| 平定县| 建阳市| 留坝县| 斗六市| 民乐县| 喀喇沁旗| 蒙城县| 东光县| 沁水县| 离岛区| 乐亭县| 嘉黎县| 城步| 元朗区| 桂林市| 习水县| 洪泽县| 灵武市| 巴彦淖尔市| 镇安县| 普兰店市| 富蕴县| 巢湖市| 项城市| 炉霍县| 尖扎县| 印江| 大埔区| 临西县| 岳西县| 舒兰市| 铁岭市| 孟州市| 北流市|