首页 > 后端开发 > C++ > C 的 `cin` 可以使用自定义分隔符吗?

C 的 `cin` 可以使用自定义分隔符吗?

Barbara Streisand
发布: 2024-12-18 16:11:11
原创
485 人浏览过

Can C  's `cin` Use Custom Delimiters?

C 的 cin 的自定义分隔符

问题:

重定向后使用 cin 时它到文件流(通过cin.rdbuf(inF.rdbug())),它会读取直到到达空白字符。是否可以使用替代分隔符?

答案:

是的,可以更改 cin (或任何其他 std::)的字间分隔符istream) 使用 std::ios_base::imbue 和自定义 ctype 方面。

处理的自定义方面冒号 (:) 和换行符作为空白字符可用于读取 /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 &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";
  }
}
登录后复制

通过将此自定义方面应用于输入流,cin 现在将将冒号和换行符解释为单词分隔符,允许分隔 /etc/passwd 等文件中的字段。

以上是C 的 `cin` 可以使用自定义分隔符吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板