std::basic_ios<CharT,Traits>::copyfmt
basic_ios& copyfmt(const basic_ios& other); |
||
若 other 与 *this 指代同一对象,则无效果。否则复制流 other
的状态到 *this 中。以下列序列进行:
2) 从
other
复制所有成员对象到 *this ,除了 rdstate() 、异常掩码和 rdbuf() 。特别是复制本地环境、格式化标志、数组 std::ios_base::iword 和 std::ios_base::pword 的内容(但不是 iword
和 pword
指针本身)、回调和 tie 的流。4) 从
other
复制异常掩码到 *this ,如同通过调用 exceptions(other.exceptions()) 。参数
other | - | 用作源的另一流 |
返回值
*this
注意
通过回调的第二趟可用于深复制 std::ios_base::pword 中的指针所指向的用户定义对象。
copyfmt()
可用于保存和恢复流状态。 Boost 为相同目的提供更加细粒度的 IO state savers 库。
示例
令 ofstream 对象 "out" 表现准确地类似 std::cout ,包括格式化、 tie() 到 std::cin 等。
运行此代码
#include <iostream> #include <fstream> int main() { std::ofstream out; out.copyfmt(std::cout); // 复制 rdstate 和 rdbuf 外的所有内容 out.clear(std::cout.rdstate()); // 复制 rdstate out.basic_ios<char>::rdbuf(std::cout.rdbuf()); // 共享缓冲 out << "Hello, world\n"; }
输出:
Hello, world