Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyesuaikan Pembatas untuk Strim Input dalam C?

Bagaimanakah Saya Boleh Menyesuaikan Pembatas untuk Strim Input dalam C?

Linda Hamilton
Lepaskan: 2024-12-08 10:48:14
asal
710 orang telah melayarinya

How Can I Customize Delimiters for Input Streams in C  ?

Menyesuaikan Pembatas untuk Strim Input dalam C

Apabila membaca input daripada strim fail menggunakan "cin," pembatas lalai untuk pengekstrakan perkataan ialah ruang kosong. Walaupun tingkah laku ini mencukupi dalam kebanyakan kes, senario mungkin timbul apabila pembatas alternatif diperlukan. Artikel ini menunjukkan cara menukar pembatas antara perkataan untuk "cin" menggunakan fungsi "std::ios_base::imbue".

Untuk menggambarkan, pertimbangkan contoh membaca fail yang diformatkan seperti "/etc/ passwd," di mana setiap medan dipisahkan oleh titik bertindih (:). Program C berikut memanfaatkan fungsi "std::ios_base::imbue" untuk mentakrifkan semula aksara kolon sebagai pembatas ruang putih:

#include <locale>
#include <iostream>

struct colon_is_space : std::ctype<char> {
  colon_is_space() : std::ctype<char>(get_table()) {}
  static mask const* get_table()
  {
    static mask rc[table_size];
    rc[':'] = std::ctype_base::space;
    rc['\n'] = std::ctype_base::space;
    return &amp;rc[0];
  }
};

int main() {
  using std::string;
  using std::cin;
  using std::locale;

  cin.imbue(locale(cin.getloc(), new colon_is_space));

  string word;
  while(cin >> word) {
    std::cout << word << "\n";
  }
}
Salin selepas log masuk

Program ini, apabila dibentangkan dengan input berformat "/etc/passwd" , akan berjaya membaca dan mengeluarkan setiap medan yang dipisahkan oleh titik bertindih. Struktur "colon_is_space" menetapkan semula aksara kolon untuk dianggap sebagai aksara ruang putih, membenarkan "cin" menganggapnya sebagai pembatas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Pembatas untuk Strim Input 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