C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 输入/输出操纵符
- std::ios_base
- std::ios_base::failure
- std::ios_base::event_callback
- std::ios_base::seekdir
- std::ios_base::event
- std::ios_base::fmtflags
- std::ios_base::iostate
- std::ios_base::iword
- std::ios_base::pword
- std::ios_base::register_callback
- std::ios_base::sync_with_stdio
- std::ios_base::Init
- std::ios_base::openmode
- std::ios_base::precision
- std::ios_base::width
- std::ios_base::imbue
- std::ios_base::getloc
- std::ios_base::xalloc
- std::ios_base::ios_base
- std::ios_base::~ios_base
- std::ios_base::flags
- std::ios_base::setf
- std::ios_base::unsetf
- C 风格文件输入/输出
- std::basic_streambuf
- std::basic_filebuf
- std::basic_stringbuf
- std::strstreambuf
- std::basic_syncbuf
- std::basic_ios
- std::basic_istream
- std::basic_osyncstream
- std::basic_ostream
- std::basic_iostream
- std::basic_ifstream
- std::basic_ofstream
- std::basic_fstream
- std::basic_istringstream
- std::basic_ostringstream
- std::basic_stringstream
- std::istrstream
- std::ostrstream
- std::strstream
- std::streamoff
- std::streamsize
- std::fpos
- std::iostream_category
- std::io_errc
- std::cin, std::wcin
- std::cout, std::wcout
- std::cerr, std::wcerr
- std::clog, std::wclog
- 注释
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
位置:首页 > C++ 参考手册 >输入/输出库 >std::ios_base > std::ios_base::iword
std::ios_base::iword
long& iword( int index ); |
||
首先,充分地分配或重置私有存储( long 的动态数组或另一可索引数据结构)以确保 index
是合法下标,然后返回到带下标 index
的私有存储 long 元素。
引用可能被此 ios_base
对象上任何其他操作非法化,包含另一对 iword()
的调用,但维持返回值,使得以相同下标从 iword(index) 读取将产生相同值(直至下次到 copyfmt() 的调用)。值能用于任何目的。必须通过先前的 xalloc() 调用获得元素下标,否则行为未定义。新元素初始化为 0 。
若分配失败,则调用可能抛出 std::ios_base::failure 的 std::basic_ios<>::setstate(badbit) 。
参数
index | - | 元素的下标值 |
返回值
到该元素的引用。
异常
设置 badbit 时可能抛出 std::ios_base::failure 。
示例
运行此代码
#include <iostream> #include <string> struct Foo { static int foo_xalloc; std::string data; Foo(const std::string& s) : data(s) {} }; // 分配 Foo 对象所用的 iword 存储 int Foo::foo_xalloc = std::ios_base::xalloc(); // 若 iword 保有 1 则此用户定义 operator<< 打印字符串 std::ostream& operator<<(std::ostream& os, Foo& f) { if(os.iword(Foo::foo_xalloc) == 1) return os << std::string(f.data.rbegin(), f.data.rend()); else return os << f.data; } // 此 I/O 操纵符在 0 与 1 间翻转存储于 iword 的数 std::ios_base& rev(std::ios_base& os) { os.iword(Foo::foo_xalloc) = !os.iword(Foo::foo_xalloc); return os; } int main() { Foo f("example"); std::cout << f << '\n' << rev << f << '\n' << rev << f << '\n'; }
输出:
example elpmaxe example
参阅
若需要则重置私有存储的大小,并访问位于指定下标的 void* 元素 (公开成员函数) | |
[静态] |
返回能安全用作 pword() 和 iword() 下标的程序范围内独有的整数 (公开静态成员函数) |