【问题标题】:Is it possible to read dos files in linux using an ifstream是否可以使用 ifstream 在 linux 中读取 dos 文件
【发布时间】:2010-09-30 02:14:12
【问题描述】:

当我使用 std::ifstream 打开一个以 dos 格式写入的文件时,ifstream 似乎无法正确打开该文件,因为之后我在流上调用 good() 失败(返回假)。我尝试以二进制模式以及默认的“in”模式打开文件,但均未成功。如果我使用 dos2unix 将文件转换为 unix,一切正常。

能够做到这一点的目的是我希望能够读取文件并解析它,但我不能保证该文件没有以 dos (Windows) 或 unix (Linux) 格式保存。理想情况下,我希望能够使用 ifstream。

有什么建议吗?

谢谢!

【问题讨论】:

  • @Chubsdad:你为什么要编辑帖子以使常规句子是固定宽度的?固定宽度格式适用于(并且主要用于)代码 sn-ps 和相关文本,而不适用于随机句子......
  • @James McNellis:我想强调与“dos2unix”相关的部分。我应该怎么做?
  • 你为什么不发布你用来打开文件并检查流状态的代码?

标签: c++


【解决方案1】:

文件格式不会影响您打开它的能力。

很有可能你的路径不正确。

【讨论】:

  • 帖子是关于Ctrl+M字符的吗?该帖子还提到做dos2unix工作正常。所以我猜这与路径无关。适当地突出显示帖子
  • Ctrl-M 字符不会影响ifstream的工作方式。文件名更有可能从坏名更改为好名。文件系统区分大小写吗?
【解决方案2】:

GCC 似乎极不可能做这样的事情。

我建议在打开它之前先做my_ifstream.exceptions( ios::failbit | ios::badbit );,然后在调试器中运行。然后你可以看到它不再是好的地方。

此外,以二进制模式打开文件(ios::in | ios::binary) 应该消除实现选择文件内容的任何可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2012-11-16
    相关资源
    最近更新 更多