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

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

Linda Hamilton
リリース: 2024-12-08 10:48:14
オリジナル
710 人が閲覧しました

How Can I Customize Delimiters for Input Streams in C  ?

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

「cin」を使用してファイル ストリームから入力を読み取る場合、単語抽出のデフォルトの区切り文字は次のとおりです。空白。ほとんどの場合、この動作で十分ですが、代替の区切り文字が必要なシナリオが発生する可能性があります。この記事では、「std::ios_base::imbue」関数を使用して「cin」の単語間の区切り文字を変更する方法を説明します。

説明のために、「/etc/」のような形式のファイルを読み取る例を考えてみましょう。 passwd」。各フィールドはコロン (:) で区切られます。次の C プログラムは、「std::ios_base::imbue」関数を利用して、コロン文字を空白区切り文字として再定義します。

#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";
  }
}
ログイン後にコピー

このプログラムは、「/etc/passwd」形式の入力が指定された場合に使用されます。 、コロンで区切られた各フィールドを正常に読み取り、出力します。 「colon_is_space」構造体は、空白文字として扱われるコロン文字を再割り当てし、「cin」がそれを区切り文字として扱えるようにします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート