如何在 C++ 中將文字追加到檔案

Jinku Hu 2023年10月12日
  1. 使用 std::ofstreamopen() 方法將文字追加到檔案中
  2. 使用 std::fstreamopen() 方法將文字追加到一個檔案中
  3. 使用 write() 方法與 std::fstreamopen() 一起將文字新增到檔案中
如何在 C++ 中將文字追加到檔案

本文介紹了多種在 C++ 中將文字追加到檔案中的方法。

使用 std::ofstreamopen() 方法將文字追加到檔案中

首先,我們應該建立一個 ofstream 物件,然後呼叫它的成員函式 open()。這個方法的第一個引數是字串型別的檔名作為,對於第二個引數,我們可以通過指定下表所示的預定義常量來定義開啟模式。

常量 解釋
std::ios_base::app 在每次寫入前都會尋找到流的末端
std::ios_base::binary 以二進位制模式開啟
std::ios_base::in 開啟檔案進行讀操作
std::ios_base::out 開啟檔案進行寫入操作
std::ios_base::trunc 開啟時丟棄流的內容
std::ios_base::ate 開啟後立即尋求流的盡頭

請注意,下面的程式碼示例在當前工作目錄下建立了一個名為 tmp.txt 的檔案。你可以傳遞一個檔案的完整路徑來建立或追加到不同的位置。

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::ofstream;
using std::string;

int main() {
  string filename("tmp.txt");
  ofstream file_out;

  file_out.open(filename, std::ios_base::app);
  file_out << "Some random text to append." << endl;
  cout << "Done !" << endl;

  return EXIT_SUCCESS;
}

輸出:

Done !

使用 std::fstreamopen() 方法將文字追加到一個檔案中

另外,我們也可以使用 fstream 來實現前面的例子,它提供了一個開啟給定檔案進行讀寫/追加的選項。此方法是操作檔案流的通用方法。注意,我們還新增了驗證,如果用 is_open 呼叫的語句,可以驗證流是否與指定的檔案相關聯。

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::fstream;
using std::string;

int main() {
  string filename("tmp.txt");
  fstream file;

  file.open(filename, std::ios_base::app | std::ios_base::in);
  if (file.is_open()) file << "Some random text to append." << endl;
  cout << "Done !" << endl;

  return EXIT_SUCCESS;
}

使用 write() 方法與 std::fstreamopen() 一起將文字新增到檔案中

解決這個問題的另一個方法是在 fstream 物件中顯式呼叫 write() 成員函式,而不是像我們在前面的例子中那樣使用 << 操作符。這種方法對於大多數情況下應該會更快,但如果你有嚴格的效能要求,一定要對你的程式碼進行剖析並比較時間。

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::fstream;
using std::string;

int main() {
  string text("Some huge text to be appended");
  string filename("tmp.txt");
  fstream file;

  file.open(filename, std::ios_base::app);
  if (file.is_open()) file.write(text.data(), text.size());
  cout << "Done !" << endl;

  return EXIT_SUCCESS;
}
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ File