ホームページ > バックエンド開発 > C++ > C の `cin` はカスタム区切り文字を使用できますか?

C の `cin` はカスタム区切り文字を使用できますか?

Barbara Streisand
リリース: 2024-12-18 16:11:11
オリジナル
477 人が閲覧しました

Can C  's `cin` Use Custom Delimiters?

C の cin のカスタム区切り文字

問題:

リダイレクト後に cin を使用する場合それをファイルストリームに(経由して) cin.rdbuf(inF.rdbug())) の場合、空白文字に達するまで読み取ります。代替の区切り文字を使用することは可能ですか?

答え:

はい、cin (またはその他の std::) の単語間の区切り文字を変更することができます。 istream) std::ios_base::imbue とカスタム ctype を使用facet.

コロン (:) と改行を空白文字として扱うカスタム ファセットを使用すると、フィールドがコロンで区切られている /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";
  }
}
ログイン後にコピー

このカスタム ファセットを入力ストリームに適用することで、cin はコロンと改行を単語区切り文字として解釈するようになり、次のようなファイル内のフィールドを分離できるようになります。 /etc/passwd.

以上がC の `cin` はカスタム区切り文字を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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