ホームページ > バックエンド開発 > C++ > C の `cin` 入力の区切り文字を変更するにはどうすればよいですか?

C の `cin` 入力の区切り文字を変更するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-05 16:39:12
オリジナル
828 人が閲覧しました

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

C での 'cin' 入力の区切り文字の変更

C で入力ストリームを操作する場合、ユーザー入力を読み取るために 'cin' を使用するのが一般的です。デフォルトでは、「cin」は空白文字を単語またはトークンを区切る区切り文字として扱います。別の区切り文字を使用する必要がある場合はどうすればよいですか?

C 標準ライブラリ API では、「cin」の区切り文字を変更するメソッドが明示的に提供されていませんが、「std::」を使用してこれを実現できます。 ios_base::imbue' 関数。

'std::ios_base::imbue' を使用すると、カスタム 'ctype' を追加できます。入力ストリームへのファセット。 Ctype ファセットは、特定のロケールの文字分類動作を定義します。

区切り文字をコロン (':') 文字に変更する方法を示す例を次に示します。

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

この例では、カスタムの「ctype」ファセット「colon_is_space」が作成されます。このファセットは、コロン (':') および改行 ('n') 文字をスペースとして分類します。

このカスタム ファセットを使用して入力ストリームにロケールを埋め込むことで、'cin' の区切り文字を効果的に変更します。結腸。その結果、抽出演算子 (>>) を使用して入力を読み取るとき、コロンが区切り文字として扱われます。

この手法を使用すると、空白以外の文字を区切り文字として使用する入力形式を処理できます。 .

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

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