c++ - 在 `ifstream::getline` 中禁用 Ctrl-Z 行为
问题描述
我想用来ifstream::getline
从文件中读取行,但该文件包含字节 Ctrl-Z (0x1A),这让人getline
认为它已到达文件末尾(这是在 Windows 中 - 在 *nix 中它将是 Ctrl-D ,如果我没记错的话)。我可以以某种方式禁用此行为,并告诉getline
忽略 Ctrl-Z 吗?
仅供参考:该文件comments.wast
位于WebAssembly 测试套件中,它测试 WebAssembly 解析器接受块注释中的任何和所有字符的能力。
解决方案
ifstream
当您的对象使用二进制模式时,这不应该发生。只需像这样创建它:
std::ifstream fin(<path>, std::ios::binary)
这当然会阻止您使用流的其他功能,但如果您的主要目标是能够在忽略特殊字符的同时读取所有类型的值,那么这可能是要走的路。
推荐阅读
- angular - 角度项目中的笑话和茉莉花
- java - 使用 Junit5 和 mockito 测试错误处理方法的怪异
- python - 什么是 Ruby 中 Python 的 encode() 等价物
- python - 尝试使用 kivy (python37) 时出现问题
- python - 查找所有日期的公共ID python
- javascript - JavaScript 不会在 ASP.NET 视图代码中执行
- amazon-web-services - S3 存储桶策略允许访问特定 AWS 服务和用户并限制其他所有
- python - 确定一个元组是否是其他元组列表的子集
- haskell - 聚合和分组
- android - 无法从 jobScheduler 启动服务