Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah manipulator aliran tersuai boleh digunakan untuk mengubah suai item masa hadapan pada aliran keluaran dalam C?

Bagaimanakah manipulator aliran tersuai boleh digunakan untuk mengubah suai item masa hadapan pada aliran keluaran dalam C?

Linda Hamilton
Lepaskan: 2024-11-07 02:12:03
asal
217 orang telah melayarinya

How can custom stream manipulators be used to modify future items on an output stream in C  ?

Pengubahsuaian Manipulator Strim Tersuai dalam C

Mengubah suai item masa hadapan pada strim dengan manipulator tersuai ialah teknik serba boleh dalam C . Walaupun manipulator seperti "hex" mengubah format output, manipulator yang melaraskan nilai, seperti "plusone," memberikan fleksibiliti yang lebih besar.

Untuk menyimpan keadaan dalam setiap strim, fungsi iword dan indeks xalloc digunakan.

inline int geti() { 
    static int i = ios_base::xalloc();
    return i;
}

ostream& add_one(ostream& os) { os.iword(geti()) = 1; return os; } 
ostream& add_none(ostream& os) { os.iword(geti()) = 0; return os; }
Salin selepas log masuk

Menggunakan aspek, output berangka boleh disesuaikan. Struktur my_num_put mengatasi kaedah do_put untuk menambah nilai berdasarkan keadaan yang disimpan.

struct my_num_put : num_put<char> {
    iter_type 
    do_put(iter_type s, ios_base&amp; f, char_type fill, long v) const { 
        return num_put<char>::do_put(s, f, fill, v + f.iword(geti())); 
    } 

    iter_type 
    do_put(iter_type s, ios_base&amp; f, char_type fill, unsigned long v) const { 
        return num_put<char>::do_put(s, f, fill, v + f.iword(geti())); 
    } 
}; 
Salin selepas log masuk

Menggunakan manipulator ini, output berangka diubah suai:

int main() {
    // outputs: 11121011
    cout.imbue(locale(locale(),new my_num_put));
    cout << add_one << 10 << 11 
         << add_none << 10 << 11;
}
Salin selepas log masuk

Untuk pengubahsuaian item tunggal, tetapkan semula perkataan kepada 0 selepas setiap panggilan do_put disyorkan.

Atas ialah kandungan terperinci Bagaimanakah manipulator aliran tersuai boleh digunakan untuk mengubah suai item masa hadapan pada aliran keluaran dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan