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 &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 サイトの他の関連記事を参照してください。