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

溫馨提示×

stringstream在異常情況下的處理

小樊
100
2024-09-03 15:30:48
欄目: 編程語言

std::stringstream 是 C++ 標準庫中的一個類,用于處理字符串流

  1. 檢查狀態:在操作 std::stringstream 對象時,可以使用 fail()bad()eof() 方法來檢查流的狀態。例如:
#include<iostream>
#include <sstream>
#include<string>

int main() {
    std::stringstream ss;
    int value;

    ss << "Not a number";
    ss >> value;

    if (ss.fail()) {
        std::cerr << "Failed to read an integer from the stream."<< std::endl;
    }

    return 0;
}
  1. 清除狀態:如果需要繼續使用同一個 std::stringstream 對象,可以使用 clear() 方法清除流的狀態。例如:
#include<iostream>
#include <sstream>
#include<string>

int main() {
    std::stringstream ss;
    int value;

    ss << "Not a number";
    ss >> value;

    if (ss.fail()) {
        std::cerr << "Failed to read an integer from the stream."<< std::endl;
        ss.clear(); // Clear the error state
        ss.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Ignore the rest of the input
        ss.str(""); // Clear the contents of the stream
    }

    // Now the stringstream is ready for new input
    ss << "42";
    ss >> value;
    std::cout << "Read value: "<< value<< std::endl;

    return 0;
}
  1. 異常處理:雖然 std::stringstream 不會拋出異常,但你可以設置流的異常掩碼,以便在特定條件下拋出異常。例如:
#include<iostream>
#include <sstream>
#include<string>

int main() {
    std::stringstream ss;
    int value;

    ss.exceptions(std::ios::failbit | std::ios::badbit); // Enable exceptions for failbit and badbit

    try {
        ss << "Not a number";
        ss >> value;
    } catch (const std::ios_base::failure& e) {
        std::cerr << "An exception occurred: " << e.what()<< std::endl;
    }

    return 0;
}

請注意,std::stringstream 不會因為遇到無效輸入而拋出異常,除非你顯式地設置了異常掩碼。在大多數情況下,檢查流的狀態并根據需要清除錯誤狀態是更好的做法。

0
东乌| 罗平县| 罗甸县| 乐至县| 增城市| 湖州市| 华坪县| 东乡| 普宁市| 米泉市| 德兴市| 三穗县| 乌恰县| 榆树市| 五莲县| 文登市| 黄梅县| 来凤县| 廉江市| 平果县| 修武县| 龙川县| 苍溪县| 竹山县| 隆回县| 郎溪县| 三明市| 台安县| 桃园市| 饶平县| 兴城市| 阿合奇县| 潞西市| 济源市| 清涧县| 肇源县| 隆德县| 泰宁县| 尼玛县| 汾阳市| 三明市|