ホームページ >バックエンド開発 >C++ >C で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?

C で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 01:47:10283ブラウズ

How Can I Customize the Delimiter for Input Streams in C  ?

C での入力ストリームの区切り文字のカスタマイズ

抽出演算子 (cin) を使用してストリームから入力を読み取る場合、デフォルトの動作は次のようになります。空白文字が見つかるまで読み取ります。ただし、特定のシナリオでは、カスタム区切り文字の使用が必要になる場合があります。

cin の区切り文字の変更

標準ライブラリには、相互間の区切り文字を変更する方法が用意されています。入力ストリームの単語区切り文字 (cin など)。これは、std::ios_base の imbue メソッドを使用して、ctype というカスタム文字タイプ ファセットを追加することで実現できます。

例: 区切り文字としてコロンを使用する

Forたとえば、/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() {
  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";
  }
}

この例では、コロン文字 (:) を処理する、collon_is_space という名前のカスタム ctype ファセットが作成されます。および改行文字 (n) は空白として使用されます。入力ストリーム cin にこのカスタム ロケールを組み込むことにより、抽出演算子 (>>) はコロンで区切られた各フィールドを読み取ります。

以上がC で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。