plantilla estándar c++11 (STL) (std::basic_istream) (10)

Definido en el archivo de cabecera <istream>
plantilla<

    clase CharT,
    clase Rasgos = std::char_traits<CharT>

> clase basic_istream : virtual public std::basic_ios<CharT, Traits>

 Plantilla de clase basic_istreamProporciona soporte de entrada de alto nivel en secuencias de caracteres. Las operaciones admitidas incluyen entrada con formato (como valores enteros o caracteres y cadenas separados por espacios en blanco) y entrada sin formato (como caracteres sin formato y matrices de caracteres). Esta funcionalidad se implementa en la interfaz proporcionada por la clase subyacente basic_iosa la que se accede a través de la clase base . basic_streambufEn la mayoría de las implementaciones de la biblioteca, basic_istreamhay un miembro de datos no heredado: se usa para almacenar el valor devuelto por basic_istream::gcount().

misceláneas

Sincronizar con el dispositivo de almacenamiento subyacente

std::basic_istream<CharT,Traits>::sync

sincronización int();

Sincroniza el búfer de entrada con la fuente de datos asociada.

Se comporta como una función de entrada sin formato , excepto que no afecta la construcción de gcount() y después de verificar el objeto centinela,

Si rdbuf() es un puntero nulo, se devuelve -1.

De lo contrario, llame a rdbuf()->pubsync(). Si la función devuelve -1, llama a setstate(badbit) y devuelve -1. De lo contrario, devuelve 0.

parámetro

(ninguno)

valor devuelto

​0​ en caso de éxito, -1 en caso de falla o si la transmisión no admite esta operación (sin almacenamiento en búfer).

Aviso

Al igual que readsome(), está definido por la implementación si esta función hace algo con el flujo proporcionado por la biblioteca. La intención suele ser que la siguiente operación de lectura recoja cualquier cambio que se haya realizado en la secuencia de entrada asociada después de que el búfer de flujo haya llenado por última vez su área de recuperación. Para hacer esto, sync()vacíe el área de búsqueda, vuelva a llenarla o no haga nada. La excepción notable es Visual Studio, donde esta operación descarta la salida sin procesar cuando se invoca en el flujo de entrada estándar.

ejemplo de llamada

#include <iostream>
#include <fstream>

void file_abc()
{
    std::ofstream f("test.txt");
    f << "abc\n";
}

void file_123()
{
    std::ofstream f("test.txt");
    f << "123\n";
}

int main()
{
    file_abc(); // 文件现在含 "abc"
    std::ifstream f("test.txt");
    std::cout << "Reading from the file\n";
    char c;
    f >> c;
    std::cout << c;
    file_123(); // 文件现在含 "123"
    f >> c;
    std::cout << c;
    f >> c;
    std::cout << c << '\n';
    f.close();

    file_abc(); // 文件现在含 "abc"
    f.open("test.txt");
    std::cout << "Reading from the file, with sync()\n";
    f >> c;
    std::cout << c;
    file_123(); // 文件现在含 "123"
    f.sync();
    f >> c;
    std::cout << c;
    f >> c;
    std::cout << c << '\n';
}

producción

 

el objeto de flujo de intercambio, excepto el búfer asociado

std::basic_istream<CharT,Traits>::swap

protegido:
intercambio vacío (basic_istream& rhs);

(desde C++11)

Llame a basic_ios::swap(rhs) para intercambiar todos los miembros de datos de la clase base, excepto rdbuf(), que luego intercambia el rhsvalor del contador gcount() entre *this y . Esta función de intercambio está protegida: es llamada por las funciones de intercambio de las clases de flujo de entrada intercambiables std::basic_ifstream y std::basic_istringstream, que saben cómo intercambiar correctamente los búferes de flujo asociados.

parámetro

derecho - Un objeto basic_istream diferente del mismo tipo para intercambiar con

 ejemplo de llamada

#include <sstream>
#include <iostream>
#include <utility>

int main()
{
    std::istringstream s1("hello");
    std::istringstream s2("bye");

    s1.swap(s2); // OK : istringstream 拥有公开的 swap()
    std::swap(s1, s2); // OK :调用 s1.swap(s2)
//  std::cin.swap(s2); // 错误: swap 是受保护成员

    std::cout << s1.rdbuf();
}

producción

 

Supongo que te gusta

Origin blog.csdn.net/qq_40788199/article/details/131736228
Recomendado
Clasificación