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

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

Patricia Arquette
リリース: 2024-12-19 07:34:09
オリジナル
764 人が閲覧しました

How Can I Customize Input Stream Delimiters in C  ?

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

標準入力ストリーム std::cin などの入力ストリームは、空白文字を区切り文字として使用します。デフォルト。ただし、代替文字を区切り文字として使用する必要がある場合はどうすればよいでしょうか?

残念ながら、C 標準ライブラリには、std::cin の区切り文字を変更する簡単な方法が提供されていません。ただし、 std::ios_base::imbue 関数を使用してカスタム ctype ファセットを追加する回避策があります。

以下のコードは、std::cin の区切り文字をコロン文字に変更し、効果的に読み取る方法を示しています。 /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";
  }
}
ログイン後にコピー

このコードでは、collon_is_space クラスが定義されていますコロン (':' ) および改行 ('n' ) 文字をスペース文字として識別するカスタム ctype ファセットとして。このファセットを std::cin に組み込むことにより、空白文字の認識が効果的に拡張され、コロンも含まれるようになります。

その結果、 std::cin >> を使用すると、演算子を使用すると、コロンで区切られた単語が読み取られます。これにより、コロンで区切られた形式に従うデータ ファイルを簡単に解析できます。

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

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