定义于头文件 <ios>
| template<      class CharT,  | 
类 std::basic_ios 提供设施,以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对象能指涉一个实际的 std::basic_streambuf 对象。
继承图

还提供了两个对常见的字符类型的特化:
| 类型 | 定义 | 
ios | basic_ios<char> | 
wios | basic_ios<wchar_t> | 
 杂项
 
管理异常掩码
std::basic_ios<CharT,Traits>::exceptions 
|   std::ios_base::iostate exceptions() const;  | (1) | |
|   void exceptions( std::ios_base::iostate except );  | (2) | 
获取和设置流的异常掩码。异常掩码确定在哪些错误状态出现时抛出 failure 类型异常。
1) 返回异常掩码。
2) 设置异常掩码为 except 。
参数
| except | - | 异常掩码 | 
返回值
1) 当前异常掩码。
2) (无)
调用示例
#include <iostream>
#include <fstream>
int main()
{
    int ivalue;
    try
    {
        std::ifstream in("in.txt");
        in.exceptions(std::ifstream::failbit);
        in >> ivalue;
    }
    catch (std::ios_base::failure &fail)
    {
        // 此处处理异常
    }
    return 0;
} 
输出

设置本地环境
std::basic_ios<CharT,Traits>::imbue 
|   std::locale imbue( const std::locale& loc );  | 
替换当前本地环境。等效地调用 ios_base::imbue(loc) ,而若有关联流缓冲( rdbuf() != 0 ),则再调用 rdbuf()->pubimbue(loc) 。
参数
| loc | - | 新的 locale | 
返回值
先前的 locale ,以 ios_base::imbue(loc) 返回。
异常
(无)
调用示例
#include <iostream>
#include <sstream>
#include <locale>
int main()
{
    std::istringstream iss;
    iss.imbue(std::locale("C"));
    std::cout << "Current locale: " << iss.getloc().name() << '\n';
    iss.imbue(std::locale());
    std::cout << "Global locale : " << iss.getloc().name() << '\n';
}
 
输出
管理相关的流缓冲区
std::basic_ios<CharT,Traits>::rdbuf 
|   std::basic_streambuf<CharT, Traits>* rdbuf() const;  | (1) | |
|   std::basic_streambuf<CharT, Traits>* rdbuf( std::basic_streambuf<CharT, Traits>* sb );  | (2) | 
管理关联的流缓冲。
1) 返回关联的流缓冲。若无关联流缓冲,则返回空指针。
2) 设置关联流缓冲为 sb 。通过调用 clear() 清除错误状态。返回操作前的关联流缓冲。若无关联流缓冲,则返回空指针。
参数
| sb | - | 要关联的流缓冲 | 
返回值
关联的流缓冲,或若无关联流缓冲则为空指针。
异常
(无)
调用示例
#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream local;
    auto cout_buff = std::cout.rdbuf(); // 保存指向 std::cout 缓冲的指针
    std::cout.rdbuf(local.rdbuf()); // 以 'local' 对象的缓冲
    // 替换内部的 std::cout 缓冲
    // 现在 std::cout 以 'local' 缓冲工作
    // 你看不到此消息
    std::cout << "some message";
    // 回到旧缓冲
    std::cout.rdbuf(cout_buff);
    // 你将看到此消息
    std::cout << "back to default buffer\n";
    // 打印 'local' 内容
    std::cout << "local content: " << local.str() << "\n";
} 
输出

管理绑定的流
std::basic_ios<CharT,Traits>::tie 
|   std::basic_ostream<CharT,Traits>* tie() const;  | (1) | |
|   std::basic_ostream<CharT,Traits>* tie( std::basic_ostream<CharT,Traits>* str );  | (2) | 
管理联系流。联系流是输出流,它与流缓冲( rdbuf() )所控制的输出序列同步,即在任何 *this 上的输入/输出操作前,在联系流上调用 flush() 。
1) 返回当前联系流。若无联系流,则返回空指针。
2) 设置当前联系流为 str 。返回操作前的联系流。若无联系流,则返回空指针。
参数
| str | - | 要设为联系流的输出流 | 
返回值
联系流,或若无联系流则为空指针。
异常
(无)
注意
默认情况下,联系标准流 cin 和 cerr 到 cout 。类似地,联系其宽对应版本 wcin 和 wcerr 到 wcout 。
调用示例
#include <iostream>
#include <fstream>
#include <string>
int main()
{
    std::ofstream os("test.txt");
    std::ifstream is("test.txt");
    std::string value("0");
    os << "Hello";
    is >> value;
    std::cout << "Result before tie(): \"" << value << "\"\n";
    is.clear();
    is.tie(&os);
    is >> value;
    std::cout << "Result after tie(): \"" << value << "\"\n";
} 
输出

 窄化字符
 
std::basic_ios<CharT,Traits>::narrow 
|   char narrow( char_type c, char dfault ) const;  | 
 转换当前本地环境限定的字符 c 到其标准等价物。若需要则将结果从 char_type 转换到 char 。若不能进行转换,则函数返回 dfault 。
等效地调用 std::use_facet< std::ctype<char_type> >(getloc()).narrow(c, dfault); 。
参数
| c | - | 要转换的字符 | 
| dfault | - | 若转化不成功则返回的字符 | 
返回值
转换到标准等价物再到 char 的字符。若转换失败则返回 dfault 。
拓宽字符
std::basic_ios<CharT,Traits>::widen 
|   char_type widen( char c ) const;  | 
转换字符 c 到其在当前本地环境的等价物。若需要,则将结果从 char 转换为用于流内的字符类型。
等效地调用 std::use_facet< std::ctype<char_type> >(getloc()).widen(c) 。
参数
| c | - | 要转换的字符 | 
返回值
转换为 char_type 的字符




















