
- C 標準庫
- C 標準庫
- C++ 標準庫
- C++ 庫 - 首頁
- C++ 庫 - <fstream>
- C++ 庫 - <iomanip>
- C++ 庫 - <ios>
- C++ 庫 - <iosfwd>
- C++ 庫 - <iostream>
- C++ 庫 - <istream>
- C++ 庫 - <ostream>
- C++ 庫 - <sstream>
- C++ 庫 - <streambuf>
- C++ 庫 - <atomic>
- C++ 庫 - <complex>
- C++ 庫 - <exception>
- C++ 庫 - <functional>
- C++ 庫 - <limits>
- C++ 庫 - <locale>
- C++ 庫 - <memory>
- C++ 庫 - <new>
- C++ 庫 - <numeric>
- C++ 庫 - <regex>
- C++ 庫 - <stdexcept>
- C++ 庫 - <string>
- C++ 庫 - <thread>
- C++ 庫 - <tuple>
- C++ 庫 - <typeinfo>
- C++ 庫 - <utility>
- C++ 庫 - <valarray>
- C++ STL 庫
- C++ 庫 - <array>
- C++ 庫 - <bitset>
- C++ 庫 - <deque>
- C++ 庫 - <forward_list>
- C++ 庫 - <list>
- C++ 庫 - <map>
- C++ 庫 - <multimap>
- C++ 庫 - <queue>
- C++ 庫 - <priority_queue>
- C++ 庫 - <set>
- C++ 庫 - <stack>
- C++ 庫 - <unordered_map>
- C++ 庫 - <unordered_set>
- C++ 庫 - <vector>
- C++ 庫 - <algorithm>
- C++ 庫 - <iterator>
- C++ 高階庫
- C++ 庫 - <any>
- C++ 庫 - <barrier>
- C++ 庫 - <bit>
- C++ 庫 - <chrono>
- C++ 庫 - <cinttypes>
- C++ 庫 - <clocale>
- C++ 庫 - <condition_variable>
- C++ 庫 - <coroutine>
- C++ 庫 - <cstdlib>
- C++ 庫 - <cstring>
- C++ 庫 - <cuchar>
- C++ 庫 - <charconv>
- C++ 庫 - <cfenv>
- C++ 庫 - <cmath>
- C++ 庫 - <ccomplex>
- C++ 庫 - <expected>
- C++ 庫 - <format>
- C++ 庫 - <future>
- C++ 庫 - <flat_set>
- C++ 庫 - <flat_map>
- C++ 庫 - <filesystem>
- C++ 庫 - <generator>
- C++ 庫 - <initializer_list>
- C++ 庫 - <latch>
- C++ 庫 - <memory_resource>
- C++ 庫 - <mutex>
- C++ 庫 - <mdspan>
- C++ 庫 - <optional>
- C++ 庫 - <print>
- C++ 庫 - <ratio>
- C++ 庫 - <scoped_allocator>
- C++ 庫 - <semaphore>
- C++ 庫 - <source_location>
- C++ 庫 - <span>
- C++ 庫 - <spanstream>
- C++ 庫 - <stacktrace>
- C++ 庫 - <stop_token>
- C++ 庫 - <syncstream>
- C++ 庫 - <system_error>
- C++ 庫 - <string_view>
- C++ 庫 - <stdatomic>
- C++ 庫 - <variant>
- C++ STL 庫速查表
- C++ STL - 速查表
- C++ 程式設計資源
- C++ 程式設計教程
- C++ 有用資源
- C++ 討論
C++ Istream 庫 - 保護塊 (sentry)
描述
它用於準備流進行輸入。所有執行輸入操作的成員函式都會自動構造此類的物件,然後對其進行評估(如果未設定任何狀態標誌,則返回 true)。只有當此物件評估結果為 true 時,函式才會嘗試執行輸入操作(否則,它會在不執行操作的情況下返回)。返回之前,函式會銷燬保護塊物件。
宣告
以下是 std::basic_istream::sentry 的宣告。
C++98
class sentry { public: explicit sentry (basic_istream& is, bool noskipws = false); ~sentry(); operator bool() const; private: sentry (const sentry&); sentry& operator= (const sentry&); };
C++11
class sentry { public: explicit sentry (basic_istream& is, bool noskipws = false); ~sentry(); explicit operator bool() const; sentry (const sentry&) = delete; sentry& operator= (const sentry&) = delete; };
成員
explicit sentry (basic_istream& is, bool noskipws = false); − 準備輸出流進行輸出操作,執行上述操作。
~sentry(); − 不執行任何操作(實現定義)。
explicit operator bool() const; − 當評估物件時,它返回一個 bool 值,指示保護塊建構函式是否成功執行了所有任務:如果在構造過程的某個點設定了內部錯誤標誌,則此函式始終為此物件返回 false。
示例
下面的示例解釋了 std::basic_istream::sentry。
#include <iostream> #include <string> #include <sstream> #include <locale> struct Phone { std::string digits; }; std::istream& operator>>(std::istream& is, Phone& tel) { std::istream::sentry s(is); if (s) while (is.good()) { char c = is.get(); if (std::isspace(c,is.getloc())) break; if (std::isdigit(c,is.getloc())) tel.digits+=c; } return is; } int main () { std::stringstream parseme (" (555)2326"); Phone myphone; parseme >> myphone; std::cout << "digits parsed: " << myphone.digits << '\n'; return 0; }
讓我們編譯並執行上面的程式,這將產生以下結果:
digits parsed: 5552326
istream.htm
廣告