public member function
<streambuf> <iostream>

std::basic_streambuf::xsputn

streamsize xsputn (const char_type* s, streamsize n);
Put sequence of characters
将指针 s 所指向的字符数组写入受控输出序列,直到写入 n 个字符或达到输出序列的末尾为止。

basic_streambuf 中的默认行为是调用 sputc n 次,如果任何调用返回 traits_type::eof(),则停止。
basic_streambuf 中的默认行为是获取 n 个字符,就如同为每个字符调用 sputc 一样,如果在 overflows 情况下任何调用会返回 traits_type::eof(),则停止。不同之处在于,是否调用成员函数 overflow 或是否使用其他方式处理溢出是未指定的。

这是一个虚成员函数,派生类可以提供更有效的实现。

参数

s
指向要写入的字符序列的指针。
成员类型 char_type流缓冲区(第一个类模板参数)中字符的类型。
n
要写入的字符数。
这应该是一个非负值。
streamsize 是一个带符号整型。

返回值

写入的字符数。
streamsize 是一个带符号整型。

数据竞争

访问 s 指向的数组中最多前 n 个字符。
修改*流缓冲区*对象。
对同一数组或同一流缓冲区对象的并发访问可能会引入数据争用。

异常安全

基本保证:如果抛出异常,则流缓冲区处于有效状态(这也适用于标准派生类)。

无效参数会导致未定义行为

另见