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

溫馨提示×

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
新和县| 河西区| 巴林右旗| 雷波县| 南皮县| 天峻县| 习水县| 四平市| 郎溪县| 霍城县| 江都市| 无极县| 陆河县| 平乡县| 星子县| 通海县| 区。| 平谷区| 长白| 馆陶县| 新绛县| 北票市| 阿城市| 巴彦淖尔市| 同仁县| 丘北县| 南漳县| 乐陵市| 东乌珠穆沁旗| 苍山县| 江华| 沁阳市| 印江| 稷山县| 潼南县| 莒南县| 甘肃省| 高尔夫| 临朐县| 通州区| 佳木斯市|