C++ 文件:20分钟从新手到专家

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ 文件:20分钟从新手到专家

\n\n

想象一下,你的程序是一位出色的厨师。它擅长烹饪,但所有食材都需要手动拿来,而且菜谱每次用完就消失。听起来不太妙,对吧?正因如此,任何有自尊的开发者都必须掌握文件和文件系统的操作。在 C++ 中,这不仅仅是“可以”——而是基础,没有它,你作为程序员会感到不自信。

\n\n

今天,我们将深入讲解 C++ 中的文件操作,让你不仅仅是复制代码,而是真正理解底层发生了什么。没有枯燥的讲座,只有生动的示例和实用建议。开始吧!

\n\n

流——C++ 文件操作的基础

\n\n

在 C++ 中,文件操作围绕流(stream)展开。如果你已经熟悉 cout 和 cin,那么可以说你已经完成了一半。文件流的工作原理相同,只是数据不是发送到屏幕或从键盘读取,而是发送到文件或从文件加载。

\n\n

主要角色有:

\n\n
    \n
  • ifstream — 用于从文件读取(输入文件流)。
  • \n
  • ofstream — 用于写入文件(输出文件流)。
  • \n
  • fstream — 通用的读写流。
  • \n
\n\n

所有这些类都位于头文件 <fstream> 中。别忘了包含它,否则编译器会不高兴。

\n\n

如何打开文件而不抓狂

\n\n

在 C++ 中打开文件就像开门:你需要知道去哪里以及为什么。让我们看一个简单的打开文件进行写入的示例:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n    std::ofstream outFile("example.txt"); // 打开文件进行写入\n    \n    if (outFile.is_open()) {\n        outFile << "你好,文件!" << std::endl;\n        outFile << "这是第二行。" << std::endl;\n        outFile.close(); // 关闭文件\n        std::cout << "写入成功!" << std::endl;\n    } else {\n        std::cerr << "无法打开文件!" << std::endl;\n    }\n    \n    return 0;\n}\n
\n\n

注意:我们总是使用 is_open() 检查文件是否成功打开。如果文件不存在,ofstream 会自动创建它。如果无法打开(例如,没有写入权限),程序不会崩溃,而是报告错误。

\n\n

打开模式:当一种模式不够用时

\n\n

默认情况下,ofstream 会覆盖文件,而 ifstream 只读取。但如果你想要追加数据到文件末尾呢?或者同时打开文件进行读写?这时就需要模式标志了:

\n\n
    \n
  • std::ios::in — 以读取模式打开。
  • \n
  • std::ios::out — 以写入模式打开(ofstream 的默认模式)。
  • \n
  • std::ios::app — 追加到文件末尾。
  • \n
  • std::ios::ate — 打开时将光标移动到末尾。
  • \n
  • std::ios::binary — 以二进制模式打开。
  • \n
\n\n

使用模式的示例:

\n\n
std::ofstream logFile("log.txt", std::ios::app); // 追加到末尾\nif (logFile.is_open()) {\n    logFile << "新的日志条目" << std::endl;\n    logFile.close();\n}\n
\n\n

如果需要同时读写,使用带有组合标志的 fstream:

\n\n
std::fstream file("data.txt", std::ios::in | std::ios::out);\n
\n\n

从文件读取:按单词和按行

\n\n

在 C++ 中从文件读取是一门艺术。可以按单词、按行或按字符读取。选择取决于任务。

\n\n

按行读取(最流行的方法)

\n\n
#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n    std::                

博客

书籍推荐