首页 > 解决方案 > 在 `ifstream::getline` 中禁用 Ctrl-Z 行为

问题描述

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

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

标签: c++ifstreamgetlinewebassembly

解决方案


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

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

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


推荐阅读