Bagikan melalui


basic_istream Kelas

Menjelaskan objek yang mengontrol ekstraksi elemen dan objek yang dikodekan dari buffer aliran dengan elemen jenis Char_T, juga dikenal sebagai char_type, yang sifat karakternya ditentukan oleh kelas Tr, juga dikenal sebagai traits_type.

Sintaks

template <class Char_T, class Tr = char_traits<Char_T>>
class basic_istream : virtual public basic_ios<Char_T, Tr>

Keterangan

Sebagian besar fungsi anggota yang kelebihan beban operator>> adalah fungsi input yang diformat. Mereka mengikuti pola:

iostate state = goodbit;
const sentry ok(*this);

if (ok)
{
    try
    {
        /*extract elements and convert
            accumulate flags in state.
            store a successful conversion*/
    }
    catch (...)
    {
        try
        {
            setstate(badbit);

        }
        catch (...)
        {
        }
        if ((exceptions()& badbit) != 0)
            throw;
    }
}
setstate(state);

return (*this);

Banyak fungsi anggota lainnya adalah fungsi input yang tidak diformat. Mereka mengikuti pola:

iostate state = goodbit;
count = 0;    // the value returned by gcount
const sentry ok(*this, true);

if (ok)
{
    try
    {
        /* extract elements and deliver
            count extracted elements in count
            accumulate flags in state */
    }
    catch (...)
    {
        try
        {
            setstate(badbit);

        }
        catch (...)
        {
        }
        if ((exceptions()& badbit) != 0)
            throw;
    }
}
setstate(state);

Kedua grup fungsi memanggil setstate(eofbit) jika mereka menemukan akhir file saat mengekstrak elemen. Untuk informasi selengkapnya, lihat setstate .

Objek penyimpanan kelas basic_istream<Char_T, Tr> :

  • Objek dasar publik virtual kelas basic_ios<Char_T, Tr>. Untuk informasi selengkapnya, lihat basic_ios .

  • Jumlah ekstraksi untuk operasi input terakhir yang tidak diformat (dipanggil count dalam kode sebelumnya).

Contoh

Lihat contoh kelas untuk basic_ifstream mempelajari selengkapnya tentang aliran input.

Konstruktor

Konstruktor Deskripsi
basic_istream Membuat objek jenis basic_istream.

Fungsi anggota

Fungsi anggota Deskripsi
gcount Mengembalikan jumlah karakter yang dibaca selama input terakhir yang tidak diformat.
get Membaca satu atau beberapa karakter dari aliran input.
getline Membaca baris dari aliran input.
ignore Menyebabkan sejumlah elemen dilewati dari posisi baca saat ini.
peek Mengembalikan karakter berikutnya yang akan dibaca.
putback Menempatkan karakter tertentu ke dalam aliran.
read Membaca jumlah karakter tertentu dari aliran dan menyimpannya dalam array.
readsome Baca dari buffer saja.
seekg Memindahkan posisi baca dalam aliran.
sentry Kelas berlapis menjelaskan objek yang deklarasinya menyusun fungsi input yang diformat dan fungsi input yang tidak diformat.
swap Menukar objek ini basic_istream dengan parameter objek yang disediakan basic_istream .
sync Menyinkronkan perangkat input terkait aliran dengan buffer aliran.
tellg Melaporkan posisi baca saat ini di aliran.
unget Menempatkan karakter baca terbaru kembali ke aliran.

Operators

Operator Deskripsi
operator>> Memanggil fungsi pada aliran input atau membaca data yang diformat dari aliran input.
operator= basic_istream Menetapkan di sisi kanan operator ke objek ini. Ini adalah penetapan pemindahan yang rvalue melibatkan referensi yang tidak meninggalkan salinan di belakang.

Persyaratan

Header:<istream>

Ruang nama:std

basic_istream::basic_istream

Membuat objek jenis basic_istream.

explicit basic_istream(
    basic_streambuf<Char_T, Tr>* strbuf,
    bool _Isstd = false);

basic_istream(basic_istream&& right);

Parameter

strbuf
Objek jenis basic_streambuf.

_Isstd
true jika itu adalah aliran standar; jika tidak, false.

right
Objek basic_istream yang akan disalin.

Keterangan

Konstruktor pertama menginisialisasi kelas dasar dengan memanggil init(strbuf). Ini juga menyimpan nol dalam jumlah ekstraksi. Untuk informasi selengkapnya, lihat init . Dan untuk informasi selengkapnya tentang jumlah ekstraksi ini, lihat bagian Keterangan dari basic_istream Ringkasan kelas .

Konstruktor kedua menginisialisasi kelas dasar dengan memanggil move(right). Ini juga menyimpan right.gcount() dalam jumlah ekstraksi dan menyimpan nol dalam jumlah ekstraksi untuk right.

Contoh

Lihat contoh untuk basic_ifstream::basic_ifstream mempelajari selengkapnya tentang aliran input.

basic_istream::gcount

Mengembalikan jumlah karakter yang dibaca selama input terakhir yang tidak diformat.

streamsize gcount() const;

Tampilkan Nilai

Jumlah ekstraksi.

Keterangan

Gunakan basic_istream::get untuk membaca karakter yang tidak diformat.

Contoh

// basic_istream_gcount.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   cout << "Type the letter 'a': ";

   ws( cin );
   char c[10];

   cin.get( &c[0],9 );
   cout << c << endl;

   cout << cin.gcount( ) << endl;
}
a
Type the letter 'a': a
1

basic_istream::get

Membaca satu atau beberapa karakter dari aliran input.

int_type get();

basic_istream<Char_T, Tr>& get(Char_T& Ch);
basic_istream<Char_T, Tr>& get(Char_T* str, streamsize count);
basic_istream<Char_T, Tr>& get(Char_T* str, streamsize count, Char_T delimiter);

basic_istream<Char_T, Tr>& get(basic_streambuf<Char_T, Tr>& strbuf);
basic_istream<Char_T, Tr>& get(basic_streambuf<Char_T, Tr>& strbuf, Char_T delimiter);

Parameter

count
Jumlah karakter yang akan dibaca dari strbuf.

delimiter
Karakter yang harus mengakhiri bacaan jika ditemui sebelum count.

str
String untuk ditulis.

Ch
Karakter yang harus didapatkan.

strbuf
Buffer untuk menulis.

Tampilkan Nilai

Bentuk get tanpa parameter mengembalikan elemen yang dibaca sebagai bilangan bulat atau akhir file. Formulir yang tersisa mengembalikan aliran (*this).

Keterangan

Fungsi input pertama yang tidak diformat mengekstrak elemen, jika memungkinkan, seolah-olah dengan mengembalikan rdbuf->sbumpc. Jika tidak, ia kembali traits_type::eof. Jika fungsi tidak mengekstrak elemen, fungsi akan memanggil setstate(failbit). Untuk informasi selengkapnya, lihat setstate .

Fungsi kedua mengekstrak elemen meta dengan int_type cara yang sama. Jika meta dibandingkan dengan traits_type::eof, fungsi memanggil setstate(failbit). Jika tidak, ia menyimpan traits_type::to_char_type(meta) di Ch. Fungsi mengembalikan *this. Untuk informasi selengkapnya, lihat to_char_type .

Fungsi ketiga mengembalikan get(str, count, widen('\n')).

Fungsi keempat mengekstrak hingga count - 1 elemen dan menyimpannya dalam array yang dimulai di str. Ini selalu disimpan char_type setelah elemen yang diekstrak yang disimpannya. Dalam urutan pengujian, ekstraksi berhenti:

  • Di akhir file.

  • Setelah fungsi mengekstrak elemen yang dibandingkan dengan delimiter. Dalam hal ini, elemen diletakkan kembali ke urutan yang dikontrol.

  • Setelah fungsi mengekstrak count - 1 elemen.

Jika fungsi tidak mengekstrak elemen, fungsi akan memanggil setstate(failbit). Bagaimanapun, ia mengembalikan *this.

Fungsi kelima mengembalikan get(strbuf, widen('\n')).

Fungsi keenam mengekstrak elemen dan menyisipkannya ke dalam strbuf. Ekstraksi berhenti pada akhir file atau pada elemen yang dibandingkan dengan delimiter, yang tidak diekstraksi. Ini juga berhenti, tanpa mengekstrak elemen yang dimaksud, jika penyisipan gagal atau melempar pengecualian (yang ditangkap tetapi tidak ditumbuhi kembali). Jika fungsi tidak mengekstrak elemen, fungsi akan memanggil setstate(failbit). Bagaimanapun, fungsi mengembalikan *this.

Contoh

// basic_istream_get.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char c[10];

   c[0] = cin.get( );
   cin.get( c[1] );
   cin.get( &c[2],3 );
   cin.get( &c[4], 4, '7' );

   cout << c << endl;
}
1111

basic_istream::getline

Mendapatkan baris dari aliran input.

basic_istream<Char_T, Tr>& getline(
    char_type* str,
    streamsize count);

basic_istream<Char_T, Tr>& getline(
    char_type* str,
    streamsize count,
    char_type delimiter);

Parameter

count
Jumlah karakter yang akan dibaca dari strbuf.

delimiter
Karakter yang harus mengakhiri bacaan jika ditemui sebelum count.

str
String untuk ditulis.

Tampilkan Nilai

Aliran (*this).

Keterangan

Fungsi input pertama yang tidak diformat ini mengembalikan getline(str, count, widen('\n')).

Fungsi kedua mengekstrak hingga count - 1 elemen dan menyimpannya dalam array yang dimulai di str. Ini selalu menyimpan karakter penghentian string setelah elemen yang diekstrak yang disimpannya. Dalam urutan pengujian, ekstraksi berhenti:

  • Di akhir file.

  • Setelah fungsi mengekstrak elemen yang dibandingkan dengan delimiter. Dalam hal ini, elemen tidak diletakkan kembali, dan tidak ditambahkan ke urutan terkontrol.

  • Setelah fungsi mengekstrak count - 1 elemen.

Jika fungsi tidak mengekstrak elemen atau count - 1 elemen, fungsi memanggil setstate(failbit). Bagaimanapun, ia mengembalikan *this. Untuk informasi selengkapnya, lihat setstate .

Contoh

// basic_istream_getline.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char c[10];

   cin.getline( &c[0], 5, '2' );
   cout << c << endl;
}
121

basic_istream::ignore

Menyebabkan sejumlah elemen dilewati dari posisi baca saat ini.

basic_istream<Char_T, Tr>& ignore(
    streamsize count = 1,
    int_type delimiter = traits_type::eof());

Parameter

count
Jumlah elemen yang akan dilewati dari posisi baca saat ini.

delimiter
Elemen yang, jika ditemui sebelum hitungan, menyebabkan ignore kembali dan mengizinkan semua elemen setelah delimiter dibaca.

Tampilkan Nilai

Aliran (*this).

Keterangan

Fungsi input yang tidak diformat mengekstrak hingga count elemen dan membuangnya. Namun, jika count sama dengan numeric_limits<int>::max, itu diambil sebagai sangat besar. Ekstraksi berhenti di awal akhir file atau pada elemen sederajat Ch yang traits_type::to_int_type(Ch) dibandingkan dengan delimiter (yang juga diekstraksi). Fungsi mengembalikan *this. Untuk informasi selengkapnya, lihat to_int_type .

Contoh

// basic_istream_ignore.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
   using namespace std;
   char chararray[10];
   cout << "Type 'abcdef': ";
   cin.ignore( 5, 'c' );
   cin >> chararray;
   cout << chararray;
}
Type 'abcdef': abcdef
def

basic\_istream::operator>>

Memanggil fungsi pada aliran input atau membaca data yang diformat dari aliran input.

basic_istream& operator>>(basic_istream& (* Pfn)(basic_istream&));
basic_istream& operator>>(ios_base& (* Pfn)(ios_base&));
basic_istream& operator>>(basic_ios<Char_T, Tr>& (* Pfn)(basic_ios<Char_T, Tr>&));
basic_istream& operator>>(basic_streambuf<Char_T, Tr>* strbuf);
basic_istream& operator>>(bool& val);
basic_istream& operator>>(short& val);
basic_istream& operator>>(unsigned short& val);
basic_istream& operator>>(int& val);
basic_istream& operator>>(unsigned int& val);
basic_istream& operator>>(long& val);
basic_istream& operator>>(unsigned long& val);
basic_istream& operator>>(long long& val);
basic_istream& operator>>(unsigned long long& val);
basic_istream& operator>>(void *& val);
basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);

Parameter

Pfn
Penunjuk fungsi.

strbuf
Objek jenis stream_buf.

val
Nilai yang akan dibaca dari aliran.

Tampilkan Nilai

Aliran (*this).

Keterangan

Header <istream> juga menentukan beberapa operator ekstraksi global. Untuk informasi selengkapnya, lihat operator>> (\<istream>) .

Fungsi anggota pertama memastikan bahwa ekspresi formulir istr >> ws memanggil ws(istr), lalu mengembalikan *this. Untuk informasi selengkapnya, lihat ws .

Fungsi kedua dan ketiga memastikan bahwa manipulator lain, seperti hex, bersifat serupa. Fungsi yang tersisa adalah fungsi input yang diformat.

Fungsi :

basic_istream& operator>>(
    basic_streambuf<Char_T, Tr>* strbuf);

mengekstrak elemen, jika strbuf bukan penunjuk null, dan menyisipkannya di strbuf. Ekstraksi berhenti di akhir file. Ini juga berhenti tanpa mengekstrak elemen yang dimaksud, jika penyisipan gagal atau melempar pengecualian (yang ditangkap tetapi tidak ditumbuhi kembali). Jika fungsi tidak mengekstrak elemen, fungsi akan memanggil setstate(failbit). Bagaimanapun, fungsi mengembalikan *this. Untuk informasi selengkapnya, lihat setstate .

Fungsi :

basic_istream& operator>>(bool& val);

mengekstrak bidang dan mengonversinya menjadi nilai Boolean dengan memanggil use_facet< num_get<Char_T, InIt>(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val). Di sini, InIt didefinisikan sebagai istreambuf_iterator<Char_T, Tr>. Fungsi mengembalikan *this.

Untuk informasi selengkapnya, lihat use_facet, getloc, get, rdbuf, dan istreambuf_iterator.

Masing-masing fungsi:

basic_istream& operator>>(short& val);
basic_istream& operator>>(unsigned short& val);
basic_istream& operator>>(int& val);
basic_istream& operator>>(unsigned int& val);
basic_istream& operator>>(long& val);
basic_istream& operator>>(unsigned long& val);
basic_istream& operator>>(long long& val);
basic_istream& operator>>(unsigned long long& val);
basic_istream& operator>>(void *& val);

ekstrak bidang dan konversikan ke nilai numerik dengan memanggil use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val). Di sini, InIt didefinisikan sebagai istreambuf_iterator<Char_T, Tr>, dan val memiliki jenis long, unsigned long, atau void * sesuai kebutuhan.

Jika nilai yang dikonversi tidak dapat direpresentasikan setstate(failbit)sebagai jenis val, fungsi memanggil . Bagaimanapun, fungsi mengembalikan *this. Untuk informasi selengkapnya, lihat setstate .

Masing-masing fungsi:

basic_istream& operator>>(float& val);
basic_istream& operator>>(double& val);
basic_istream& operator>>(long double& val);

ekstrak bidang dan konversikan ke nilai numerik dengan memanggil use_facet<num_get<Char_T, InIt>(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val). Di sini, InIt didefinisikan sebagai istreambuf_iterator<Char_T, Tr>, dan val memiliki jenis double atau long double sesuai kebutuhan.

Jika nilai yang dikonversi tidak dapat direpresentasikan setstate(failbit)sebagai jenis val, fungsi memanggil . Bagaimanapun, ia mengembalikan *this.

Contoh

// istream_basic_istream_op_is.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

ios_base& hex2( ios_base& ib )
{
   ib.unsetf( ios_base::dec );
   ib.setf( ios_base::hex );
   return ib;
}

basic_istream<char, char_traits<char> >& somefunc(basic_istream<char, char_traits<char> > &i)
{
   if ( i == cin )
   {
      cerr << "i is cin" << endl;
   }
   return i;
}

int main( )
{
   int i = 0;
   cin >> somefunc;
   cin >> i;
   cout << i << endl;
   cin >> hex2;
   cin >> i;
   cout << i << endl;
}

basic_istream::operator=

basic_istream Menetapkan di sisi kanan operator ke objek ini. Ini adalah penetapan pemindahan yang rvalue melibatkan referensi yang tidak meninggalkan salinan di belakang.

basic_istream& operator=(basic_istream&& right);

Parameter

right
Referensi rvalue ke basic_ifstream objek.

Tampilkan Nilai

Menampilkan *this.

Keterangan

Operator anggota memanggil swap(right).

basic_istream::peek

Mengembalikan karakter berikutnya yang akan dibaca.

int_type peek();

Tampilkan Nilai

Karakter berikutnya yang akan dibaca.

Keterangan

Fungsi input yang tidak diformat mengekstrak elemen, jika memungkinkan, seolah-olah dengan mengembalikan rdbuf->sgetc. Jika tidak, ia kembali traits_type::eof. Untuk informasi lebih lanjut, lihat sgetc dan eof.

Contoh

// basic_istream_peek.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char c[10], c2;
   cout << "Type 'abcde': ";

   c2 = cin.peek( );
   cin.getline( &c[0], 9 );

   cout << c2 << " " << c << endl;
}
abcde
Type 'abcde': abcde
a abcde

basic_istream::putback

Menempatkan karakter tertentu ke dalam aliran.

basic_istream<Char_T, Tr>& putback(
    char_type Ch);

Parameter

Ch
Karakter yang akan dimasukkan kembali ke aliran.

Tampilkan Nilai

Aliran (*this).

Keterangan

Fungsi input yang tidak diformat mengembalikan Ch, jika memungkinkan, seolah-olah dengan memanggil rdbuf->sputbackc. Jika rdbuf adalah penunjuk null, atau jika panggilan untuk sputbackc mengembalikan traits_type::eof, fungsi memanggil setstate(badbit). Bagaimanapun, ia mengembalikan *this.

Untuk informasi selengkapnya, lihat rdbuf, sputbackc, eof, dan setstate.

Contoh

// basic_istream_putback.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char c[10], c2, c3;

   c2 = cin.get( );
   c3 = cin.get( );
   cin.putback( c2 );
   cin.getline( &c[0], 9 );
   cout << c << endl;
}
qwq

basic_istream::read

Membaca jumlah karakter tertentu dari aliran dan menyimpannya dalam array.

Metode ini berpotensi tidak aman, karena bergantung pada pemanggil untuk memeriksa apakah nilai yang diteruskan sudah benar.

basic_istream<Char_T, Tr>& read(
    char_type* str,
    streamsize count);

Parameter

str
Array untuk membaca karakter.

count
Jumlah karakter yang akan dibaca.

Tampilkan Nilai

Aliran ( *this).

Keterangan

Fungsi input yang tidak diformat mengekstrak hingga count elemen dan menyimpannya dalam array yang dimulai di str. Ekstraksi berhenti di awal akhir file, dalam hal ini fungsi memanggil setstate(failbit). Bagaimanapun, ia mengembalikan *this. Untuk informasi selengkapnya, lihat setstate .

Contoh

// basic_istream_read.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main()
{
    char c[10];
    int count = 5;

    cout << "Type 'abcde': ";

    // Note: cin::read is potentially unsafe, consider
    // using cin::_Read_s instead.
    cin.read(&c[0], count);
    c[count] = 0;

    cout << c << endl;
}
abcde
Type 'abcde': abcde
abcde

basic_istream::readsome

Membaca jumlah nilai karakter yang ditentukan.

Metode ini berpotensi tidak aman, karena bergantung pada pemanggil untuk memeriksa apakah nilai yang diteruskan sudah benar.

streamsize readsome(
    char_type* str,
    streamsize count);

Parameter

str
Array tempat readsome menyimpan karakter yang dibacanya.

count
Jumlah karakter yang akan dibaca.

Tampilkan Nilai

Jumlah karakter benar-benar dibaca, gcount.

Keterangan

Fungsi input yang tidak diformat ini mengekstrak hingga count elemen dari aliran input dan menyimpannya dalam array str.

Fungsi ini tidak menunggu input. Ini membaca data apa pun yang tersedia.

Contoh

// basic_istream_readsome.cpp
// compile with: /EHsc /W3
#include <iostream>
using namespace std;

int main( )
{
   char c[10];
   int count = 5;

   cout << "Type 'abcdefgh': ";

   // cin.read blocks until user types input.
   // Note: cin::read is potentially unsafe, consider
   // using cin::_Read_s instead.
   cin.read(&c[0], 2);

   // Note: cin::readsome is potentially unsafe, consider
   // using cin::_Readsome_s instead.
   int n = cin.readsome(&c[0], count);  // C4996
   c[n] = 0;
   cout << n << " characters read" << endl;
   cout << c << endl;
}

basic_istream::seekg

Memindahkan posisi baca dalam aliran.

basic_istream<Char_T, Tr>& seekg(pos_type pos);

basic_istream<Char_T, Tr>& seekg(off_type off, ios_base::seekdir way);

Parameter

pos
Posisi absolut untuk memindahkan penunjuk baca.

off
Offset untuk memindahkan penunjuk baca relatif terhadap way.

way
Salah ios_base::seekdir satu enumerasi.

Tampilkan Nilai

Aliran (*this).

Keterangan

Fungsi anggota pertama melakukan pencarian absolut, fungsi anggota kedua melakukan pencarian relatif.

Catatan

Jangan gunakan fungsi anggota kedua dengan file teks, karena Standard C++ tidak mendukung pencarian relatif dalam file teks.

Jika fail adalah false, fungsi anggota pertama memanggil newpos = rdbuf->pubseekpos(pos), untuk beberapa pos_type objek newpossementara . Jika fail adalah false, fungsi kedua memanggil newpos = rdbuf->pubseekoff( off, way). Dalam kedua kasus, jika (off_type)newpos == (off_type)(-1) (operasi penempatan gagal), fungsi memanggil istr.setstate(failbit). Kedua fungsi mengembalikan *this.

Jika fail adalah true, fungsi anggota tidak melakukan apa-apa.

Untuk informasi selengkapnya, lihat rdbuf, pubseekpos, pubseekoff, dan setstate.

Contoh

// basic_istream_seekg.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main ( )
{
   using namespace std;
   ifstream file;
   char c, c1;

   file.open( "basic_istream_seekg.txt" );
   file.seekg(2);   // seek to position 2
   file >> c;
   cout << c << endl;
}

basic_istream::sentry

Kelas berlapis menjelaskan objek yang deklarasinya menyusun fungsi input yang diformat dan tidak diformat.

class sentry {
   public:
   explicit sentry(
      basic_istream<Char_T, Tr>& _Istr,
      bool _Noskip = false);
   operator bool() const;
   };

Keterangan

Jika _Istr.good adalah true, konstruktor:

  • _Istr.tie->flush Memanggil jika _Istr.tie bukan penunjuk null.

  • Secara efektif memanggil ws(_Istr) jika _Istr.flags & skipws bukan nol.

Jika setelah persiapan seperti itu, _Istr.good adalah false, konstruktor memanggil _Istr.setstate(failbit). Bagaimanapun, konstruktor menyimpan nilai yang dikembalikan oleh _Istr.good dalam status. Panggilan selanjutnya untuk operator bool memberikan nilai tersimpan ini.

Untuk informasi selengkapnya, lihat good, tie, flush, ws, flags, skipws, dan setstate.

basic_istream::swap

Menukar isi dua basic_istream objek.

void swap(basic_istream& right);

Parameter

right
Referensi lvalue ke basic_istream objek.

Keterangan

Fungsi anggota memanggil basic_ios::swap(right). Ini juga bertukar jumlah ekstraksi dengan jumlah ekstraksi untuk right. Untuk informasi selengkapnya, lihat basic_ios::swap .

basic_istream::sync

Menyinkronkan perangkat input terkait aliran dengan buffer aliran.

int sync();

Tampilkan Nilai

Jika rdbuf adalah penunjuk null, fungsi mengembalikan -1. Jika tidak, ia memanggil rdbuf->pubsync. Jika panggilan tersebut mengembalikan -1, fungsi akan memanggil setstate(badbit) dan mengembalikan -1. Jika tidak, fungsi mengembalikan nol. Untuk informasi lebih lanjut, lihat pubsync dan setstate.

basic_istream::tellg

Melaporkan posisi baca saat ini di aliran.

pos_type tellg();

Tampilkan Nilai

Posisi saat ini di aliran.

Keterangan

Jika fail adalah false, fungsi anggota mengembalikan rdbuf->pubseekoff(0, cur, in). Jika tidak, ia kembali pos_type(-1). Untuk informasi lebih lanjut, lihat rdbuf dan pubseekoff.

Contoh

// basic_istream_tellg.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main()
{
    using namespace std;
    ifstream file;
    char c;
    streamoff i;

    file.open("basic_istream_tellg.txt");
    i = file.tellg();
    file >> c;
    cout << c << " " << i << endl;

    i = file.tellg();
    file >> c;
    cout << c << " " << i << endl;
}

basic_istream::unget

Menempatkan karakter baca terbaru kembali ke aliran.

basic_istream<Char_T, Tr>& unget();

Tampilkan Nilai

Aliran (*this).

Keterangan

Fungsi input yang tidak diformat mengembalikan elemen sebelumnya dalam aliran, jika memungkinkan, seolah-olah dengan memanggil rdbuf->sungetc Jika rdbuf adalah penunjuk null, atau jika panggilan untuk sungetc mengembalikan traits_type::eof, fungsi memanggil setstate(badbit). Bagaimanapun, ia mengembalikan *this.

Untuk informasi selengkapnya, lihat sungetc, eof, and setstate. Dan untuk informasi tentang bagaimana unget mungkin gagal, lihat basic_streambuf::sungetc.

Contoh

// basic_istream_unget.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main( )
{
   char c[10], c2;

   cout << "Type 'abc': ";
   c2 = cin.get( );
   cin.unget( );
   cin.getline( &c[0], 9 );
   cout << c << endl;
}
abc
Type 'abc': abc
abc

Baca juga

Keamanan utas di Pustaka Standar C++
iostream Pemrograman
iostreams Konvensi