Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Pembatas untuk Input `cin` dalam C?

Bagaimanakah Saya Boleh Menukar Pembatas untuk Input `cin` dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 16:39:12832semak imbas

How Can I Change the Delimiter for `cin` Input in C  ?

Mengubah suai Pembatas untuk Input 'cin' dalam C

Apabila bekerja dengan aliran input dalam C , adalah perkara biasa untuk menggunakan 'cin' untuk membaca input pengguna. Secara lalai, 'cin' menganggap aksara ruang putih sebagai pembatas, memisahkan perkataan atau token. Bagaimana jika anda perlu menggunakan pembatas yang berbeza?

Walaupun API Perpustakaan Standard C tidak menyediakan kaedah untuk menukar pembatas bagi 'cin' secara eksplisit, adalah mungkin untuk mencapai ini menggunakan 'std:: ios_base::imbue' function.

'std::ios_base::imbue' membolehkan anda menambah facet 'ctype' tersuai pada aliran input. Faset Ctype mentakrifkan gelagat pengelasan aksara untuk tempat tertentu.

Berikut ialah contoh yang menunjukkan cara menukar pembatas kepada aksara bertindih (':'):

#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";
  }
}

Dalam contoh ini , faset 'ctype' tersuai, 'colon_is_space,' dicipta. Facet ini mengklasifikasikan aksara bertindih (':') dan baris baharu ('n') sebagai ruang.

Dengan menerapkan aliran input dengan tempat menggunakan faset tersuai ini, kami menukar pembatas untuk 'cin' dengan berkesan kepada kolon. Akibatnya, apabila membaca input menggunakan operator pengekstrakan (>>), ia akan menganggap kolon sebagai pemisah.

Teknik ini boleh digunakan untuk mengendalikan format input yang menggunakan aksara bukan ruang putih sebagai pembatas. .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Pembatas untuk Input `cin` dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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