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

Bagaimanakah saya Boleh Menyesuaikan Pembatas Strim Input dalam C?

Patricia Arquette
Lepaskan: 2024-12-19 07:34:09
asal
696 orang telah melayarinya

How Can I Customize Input Stream Delimiters in C  ?

Menyesuaikan Pembatas Strim Input dalam C

Strim input, seperti strim input standard std::cin, gunakan aksara ruang putih sebagai pembatas oleh lalai. Walau bagaimanapun, bagaimana jika anda perlu menggunakan aksara alternatif sebagai pembatas?

Malangnya, pustaka standard C tidak menyediakan cara mudah untuk menukar pembatas untuk std::cin. Walau bagaimanapun, terdapat penyelesaian menggunakan fungsi std::ios_base::imbue untuk menambah faset ctype tersuai.

Kod di bawah menunjukkan cara menukar pembatas untuk std::cin kepada aksara kolon, membaca dengan berkesan perkataan yang dibataskan dalam gaya /etc/passwd.

#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() {
  std::cin.imbue(std::locale(std::cin.getloc(), new colon_is_space));

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

Dalam kod ini, kelas colon_is_space ditakrifkan sebagai faset ctype tersuai yang mengenal pasti aksara bertindih (':' ) dan baris baharu ('n' ) sebagai aksara ruang. Dengan menerapkan facet ini ke dalam std::cin, kami meluaskan pengecaman aksara ruang putih dengan berkesan untuk memasukkan titik bertindih.

Akibatnya, apabila anda menggunakan std::cin >> operator, ia akan membaca perkataan yang dibatasi oleh titik bertindih. Ini membolehkan anda menghuraikan fail data dengan mudah mengikut format yang dipisahkan bertindih.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menyesuaikan Pembatas 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