微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 `ifstream::getline` 中禁用 Ctrl-Z 行为

如何解决在 `ifstream::getline` 中禁用 Ctrl-Z 行为

我想使用 ifstream::getline文件中读取行,但该文件包含字节 Ctrl-Z (0x1A),这使 getline 认为它已到达文件末尾(这是在 Windows 中——在 *nix 中,如果我没记错的话,它将是 Ctrl-D)。我可以以某种方式禁用此行为,并告诉 getline 忽略 Ctrl-Z 吗?

仅供参考:文件WebAssembly testsuite 中的 comments.wast,它测试 WebAssembly 解析器接受块注释中的任何和所有字符的能力。

解决方法

当您的 ifstream 对象使用二进制模式时,不应发生这种情况。 只需像这样创建它:

std::ifstream fin(<path>,std::ios::binary)

这当然会阻止您使用流的其他功能,但如果您的主要目标是能够在忽略特殊字符的同时读取所有类型的值,这可能是要走的路。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。