代码之家  ›  专栏  ›  技术社区  ›  displayName

C++中的流写文件的C++读取

  •  -1
  • displayName  · 技术社区  · 7 年前

    我正在写一个C++文件,如下:

    void TestExportWriteOut()
    {
        const auto filePath = R"(C:\TestOut.bin)";
        ofstream outFile(filePath, ios::out | ios::binary);
        outFile<< 1;
        outFile.flush();
        outFile.close();
    }
    

    试着用C#as来读它:

    [TestMethod]
    public void LoadTestOut()
    {
        const string filePath = "C:\\TestOut.bin";
        using (var fileStream = File.OpenRead(filePath))
        using (var reader = new BinaryReader(fileStream))
        {
            var intOne = reader.ReadInt32(); //!!Throws Exception
            Assert.AreEqual(intOne, 1);
        }
    }
    

    然而,就在我试图读取整数值1的那一行,我得到一个异常,说:

    System.IO.EndOfStreamException:“无法读取流结尾以外的内容。”


    ofstream 在C++中?

    我可以看到文件系统上由C++创建的文件,而我写的所有文件都是int,其大小是1KB。

    1 回复  |  直到 7 年前
        1
  •  1
  •   AProgrammer    7 年前

    这个 ios::binary operator<<(int) 它仍然把它的论点放在文本中。在C++方面,使用 outFile.write() 输出二进制表示(与


    (*)对于二进制文件的概念不同于文本文件(Windows和Unix都不在该类中)的操作系统,它确实以二进制文件的形式打开文件,并且它阻止 \n 在操作系统中表示行尾的正常方式中(Windows为此使用一对字符,这就是为什么需要 ios::二进制 (国旗)