public member function
<ios> <iostream>

std::basic_ios::copyfmt

basic_ios& copyfmt (const basic_ios& rhs);
复制格式信息
rhs的所有内部成员(状态标志和关联的流缓冲区除外)的值复制到*this的相应成员。

调用之后,以下成员函数对rhs*this返回相同的值
element描述
标志格式标志
宽度字段宽度
precisionprecision
getlocselected locale
iarrayinternal extensible array *
parrayinternal extensible array *
fill填充字符
tie绑定流
exceptionsexceptions mask (last to be copied, see below)

* 每个流对象都保留其自身的内部可扩展数组iwordpword)的副本:其内容被复制,而不是仅仅复制指向它的指针。
* 每个流对象都保留其自身的内部可扩展数组iwordpword)的副本:其内容被复制,而不是仅仅复制指向它的指针。

如果将被复制的指针值指向存储在rhs外部的对象,并且这些对象在rhs销毁时也被销毁,则*this将存储指向这些对象新构造副本的指针。

调用此函数会调用两次通过成员register_callback注册的所有函数:首先,在复制过程开始之前,函数会使用(*fn)(erase_event,*this,index)调用每个注册的回调函数fn。然后,在最后,在异常掩码被复制之前,函数会使用(*fn)(copyfmt_event,*this,index)调用每个注册的回调函数fn(第二次调用可用于访问和修改复制的内部可扩展数组)。

参数

rhs
Stream object whose members are copied to *this.

返回值

*this

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// copying formatting information
#include <iostream>     // std::cout
#include <fstream>      // std::ofstream

int main () {
  std::ofstream filestr;
  filestr.open ("test.txt");

  std::cout.fill ('*');
  std::cout.width (10);
  filestr.copyfmt (std::cout);

  std::cout << 40;
  filestr << 40;

  return 0;
}

此示例以相同格式将一个数字输出到cout和名为"test.txt"的文件中。
********40


数据竞争

Modifies the stream object (*this), and accesses rhs.
Concurrent access to any of the objects may cause data races.

异常安全

基本保证:如果抛出异常,流处于有效状态。

另见