std::basic_fstream
出自cppreference.com
在標頭 <fstream> 定義
|
||
template< class CharT, |
||
類模板 basic_fstream
實現基於文件的流上的高層輸入/輸出。它將 std::basic_iostream 的高層介面賦予基於文件的緩衝(std::basic_filebuf)。
std::basic_fstream
的典型實現只保有一個非派生數據成員:std::basic_filebuf<CharT, Traits> 的一個實例。
提供了幾個針對常用字元類型的 typedef:
在標頭
<fstream> 定義 | |
類型 | 定義 |
std::fstream
|
std::basic_fstream<char> |
std::wfstream
|
std::basic_fstream<wchar_t> |
目錄 |
[編輯] 成員類型
成員類型 | 定義 |
char_type
|
CharT
|
traits_type
|
Traits ;Traits::char_type 不是 CharT 時程序非良構。
|
int_type
|
Traits::int_type
|
pos_type
|
Traits::pos_type
|
off_type
|
Traits::off_type
|
[編輯] 成員函數
構造文件流 (公開成員函數) | |
(析構函數) [虛] (隱式聲明) |
析構 basic_fstream 和關聯的緩衝區,並關閉文件 (虛公開成員函數) |
(C++11) |
移動文件流 (公開成員函數) |
(C++11) |
交換兩個文件流 (公開成員函數) |
返回底層未處理的文件設備對象 (公開成員函數) | |
(C++26) |
返回底層的由實現定義的句柄 (公開成員函數) |
文件操作 | |
檢查流是否有關聯文件 (公開成員函數) | |
打開文件,並將它與流關聯 (公開成員函數) | |
關閉關聯文件 (公開成員函數) |
[編輯] 非成員函數
特化 std::swap 演算法 (函數模板) |
繼承自 std::basic_istream
成員函數
有格式輸入 | |
提取帶格式數據 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
無格式輸入 | |
提取字元 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
讀取下一個字元,但不會提取它 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
撤銷上一個字元的提取 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
往輸入流中放置一個字元 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
持續提取字元,直到找到給定字元 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
持續提取並丟棄字元,直到找到給定字元 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
按區塊提取字元 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
提取已經可用的字元區塊 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
返回上次無格式輸入操作提取的字元數量 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
尋位 | |
返回輸入位置指示器 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
設置輸入位置指示器 ( std::basic_istream<CharT,Traits> 的公開成員函數)
| |
雜項 | |
與底層存儲設備同步 ( std::basic_istream<CharT,Traits> 的公開成員函數)
|
成員類
實現為輸出操作準備流的基本邏輯 ( std::basic_istream<CharT,Traits> 的公開成員類)
|
繼承自 std::basic_ostream
成員函數
有格式輸出 | |
插入帶格式數據 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
| |
無格式輸出 | |
插入字元 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
| |
按區塊插入字元 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
| |
尋位 | |
返回輸出位置指示器 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
| |
設置輸出位置指示器 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
| |
雜項 | |
與底層存儲設備同步 ( std::basic_ostream<CharT,Traits> 的公開成員函數)
|
成員類
為輸出操作實現流準備的基本邏輯 ( std::basic_ostream<CharT,Traits> 的公開成員類)
|
繼承自 std::basic_ios
成員類型
成員類型 | 定義 |
char_type
|
CharT
|
traits_type
|
Traits
|
int_type
|
Traits::int_type
|
pos_type
|
Traits::pos_type
|
off_type
|
Traits::off_type
|
成員函數
狀態函數 | |
檢查是否沒有發生錯誤,即是否可執行輸入/輸出操作 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
檢查是否到達了文件末尾 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
檢查是否發生了可恢復的錯誤 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
檢查是否已發生不可恢復的錯誤 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
檢查是否有錯誤發生(fail() 的同義詞) ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
檢查是否沒有發生錯誤(! fail() 的同義詞) ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
返回狀態標誌 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
設置狀態標誌 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
修改狀態標誌 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
格式化 | |
複製格式化信息 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
管理填充字元 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
雜項 | |
管理異常掩碼 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
設置本地環境 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
管理相關的流緩衝區 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
管理綁定的流 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
窄化字元 ( std::basic_ios<CharT,Traits> 的公開成員函數)
| |
拓寬字元 ( std::basic_ios<CharT,Traits> 的公開成員函數)
|
繼承自 std::ios_base
成員函數
格式化 | |
管理格式標誌 ( std::ios_base 的公開成員函數)
| |
設置特定格式標誌 ( std::ios_base 的公開成員函數)
| |
清除特定格式的標誌 ( std::ios_base 的公開成員函數)
| |
管理浮點數操作的精度 ( std::ios_base 的公開成員函數)
| |
管理欄位寬度 ( std::ios_base 的公開成員函數)
| |
本地環境 | |
設置本地環境 ( std::ios_base 的公開成員函數)
| |
返回當前本地環境 ( std::ios_base 的公開成員函數)
| |
內部可擴展數組 | |
[靜態] |
返回能安全用作 pword() 和 iword() 的索引的程序範圍內獨有的整數 ( std::ios_base 的公開靜態成員函數)
|
若必要則調整私有存儲的大小,並訪問位於給定索引的 long 元素 ( std::ios_base 的公開成員函數)
| |
若需要則調整私有存儲的大小,並訪問位於給定索引的 void* 元素 ( std::ios_base 的公開成員函數)
| |
雜項 | |
註冊事件回調函數 ( std::ios_base 的公開成員函數)
| |
[靜態] |
設置 C++ 和 C 的輸入/輸出庫是否可以互操作 ( std::ios_base 的公開靜態成員函數)
|
成員類 | |
流異常 ( std::ios_base 的公開成員類)
| |
初始化標準流對象 ( std::ios_base 的公開成員類)
|
成員類型和常量 | |||||||||||||||||||||||||||||||||||||||
類型 | 解釋 | ||||||||||||||||||||||||||||||||||||||
流打開模式類型 同時定義下列常量:
(typedef) | |||||||||||||||||||||||||||||||||||||||
格式化標誌類型
亦定義下列常量:
(typedef) | |||||||||||||||||||||||||||||||||||||||
流狀態類型
亦定義下列常量:
(typedef) | |||||||||||||||||||||||||||||||||||||||
尋位方向類型
亦定義下列常量:
(typedef) | |||||||||||||||||||||||||||||||||||||||
指定事件類型 (枚舉) | |||||||||||||||||||||||||||||||||||||||
回調函數類型 (typedef) |
[編輯] 註解
功能特性測試宏 | 值 | 標準 | 功能特性 |
---|---|---|---|
__cpp_lib_fstream_native_handle |
202306L |
(C++26) | 原生句柄支持 |
[編輯] 示例
運行此代碼
#include <fstream> #include <iostream> #include <string> int main() { std::string filename{"test.bin"}; std::fstream s{filename, s.binary | s.trunc | s.in | s.out}; if (!s.is_open()) std::cout << "打开 " << filename << " 失败\n"; else { // 写入 double d = 3.14; s.write(reinterpret_cast<char*>(&d), sizeof d); // 二进制输出 s << 123 << "abc"; // 文本输出 // 对于 fstream,这会移动文件位置指针(放置与获取) s.seekp(0); // 读取 d = 2.71828; s.read(reinterpret_cast<char*>(&d), sizeof d); // 二进制输入 int n; std::string str; if (s >> n >> str) // 文本输入 std::cout << "从文件读回:" << d << ' ' << n << ' ' << str << '\n'; } }
輸出:
从文件读回:3.14 123 abc
[編輯] 參閱
從輸入/輸出流讀取數據到字元串 (函數模板) |