C での入力ストリーム区切り文字のカスタマイズ
標準入力ストリーム std::cin などの入力ストリームは、空白文字を区切り文字として使用します。デフォルト。ただし、代替文字を区切り文字として使用する必要がある場合はどうすればよいでしょうか?
残念ながら、C 標準ライブラリには、std::cin の区切り文字を変更する簡単な方法が提供されていません。ただし、 std::ios_base::imbue 関数を使用してカスタム ctype ファセットを追加する回避策があります。
以下のコードは、std::cin の区切り文字をコロン文字に変更し、効果的に読み取る方法を示しています。 /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() { std::cin.imbue(std::locale(std::cin.getloc(), new colon_is_space)); std::string word; while (std::cin >> word) { std::cout << word << "\n"; } }
このコードでは、collon_is_space クラスが定義されていますコロン (':' ) および改行 ('n' ) 文字をスペース文字として識別するカスタム ctype ファセットとして。このファセットを std::cin に組み込むことにより、空白文字の認識が効果的に拡張され、コロンも含まれるようになります。
その結果、 std::cin >> を使用すると、演算子を使用すると、コロンで区切られた単語が読み取られます。これにより、コロンで区切られた形式に従うデータ ファイルを簡単に解析できます。
以上がC で入力ストリームの区切り文字をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。