首页 > 后端开发 > C++ > 如何在 C 中自定义输入流分隔符?

如何在 C 中自定义输入流分隔符?

Patricia Arquette
发布: 2024-12-19 07:34:09
原创
696 人浏览过

How Can I Customize Input Stream Delimiters in C  ?

在 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 &amp;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";
  }
}
登录后复制

在此代码中,colon_is_space 类被定义为自定义 ctype将冒号 (':') 和换行符 ('n') 字符标识为空格字符的构面。通过将此方面融入 std::cin,我们有效地将空白字符的识别扩展到包括冒号。

因此,当您使用 std::cin >>运算符,它将读取由冒号分隔的单词。这使您可以轻松解析遵循冒号分隔格式的数据文件。

以上是如何在 C 中自定义输入流分隔符?的详细内容。更多信息请关注PHP中文网其他相关文章!

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