C での入力ストリームの区切り文字のカスタマイズ
「cin」を使用してファイル ストリームから入力を読み取る場合、単語抽出のデフォルトの区切り文字は次のとおりです。空白。ほとんどの場合、この動作で十分ですが、代替の区切り文字が必要なシナリオが発生する可能性があります。この記事では、「std::ios_base::imbue」関数を使用して「cin」の単語間の区切り文字を変更する方法を説明します。
説明のために、「/etc/」のような形式のファイルを読み取る例を考えてみましょう。 passwd」。各フィールドはコロン (:) で区切られます。次の C プログラムは、「std::ios_base::imbue」関数を利用して、コロン文字を空白区切り文字として再定義します。
#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"; } }
このプログラムは、「/etc/passwd」形式の入力が指定された場合に使用されます。 、コロンで区切られた各フィールドを正常に読み取り、出力します。 「colon_is_space」構造体は、空白文字として扱われるコロン文字を再割り当てし、「cin」がそれを区切り文字として扱えるようにします。
以上がC で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。