C での入力ストリームの区切り文字のカスタマイズ
抽出演算子 (cin) を使用してストリームから入力を読み取る場合、デフォルトの動作は次のようになります。空白文字が見つかるまで読み取ります。ただし、特定のシナリオでは、カスタム区切り文字の使用が必要になる場合があります。
cin の区切り文字の変更
標準ライブラリには、相互間の区切り文字を変更する方法が用意されています。入力ストリームの単語区切り文字 (cin など)。これは、std::ios_base の imbue メソッドを使用して、ctype というカスタム文字タイプ ファセットを追加することで実現できます。
例: 区切り文字としてコロンを使用する
Forたとえば、/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 &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"; } }
この例では、コロン文字 (:) を処理する、collon_is_space という名前のカスタム ctype ファセットが作成されます。および改行文字 (n) は空白として使用されます。入力ストリーム cin にこのカスタム ロケールを組み込むことにより、抽出演算子 (>>) はコロンで区切られた各フィールドを読み取ります。
以上がC で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。