首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 文件拷貝插入空行:ifstream/ofstream 使用細節與常見錯誤

     編輯:程式設計疑難解答

問題代碼

ifstream in; ofstream out;
char buff[133];
in.open("infile.dat");
out.open("outfile.dat");
while (in.getline(buff, 133))
    out << buff << "/n/n";  // 錯誤:/n 非換行轉義
// 期望:每行後插入一空行

錯誤分析

  1. 換行轉義字符錯誤:C++ 中換行是 \n(反斜杠),代碼寫成 /n(正斜杠),導致輸出字面字符串 /n/n。
  2. 未檢查文件打開狀態:若 infile.dat 不存在,in.getline 直接失敗,循環不執行,輸出文件為空。
  3. getline 行為:讀取一行(不含換行符),若文件為空或讀取失敗返回 false。

修正代碼

#include <fstream>
#include <string>

int main() {
    std::ifstream in("infile.dat");
    std::ofstream out("outfile.dat");
    
    if (!in) { std::cerr << "無法打開輸入文件\n"; return 1; }
    if (!out) { std::cerr << "無法創建輸出文件\n"; return 1; }

    std::string line;
    while (std::getline(in, line)) {
        out << line << "\n\n";  // 正確換行轉義
    }
    return 0;
}

關鍵點總結

問題錯誤寫法正確寫法
換行符/n\n
文件打開檢查無if (!in) ...
緩衝區類型char[]std::string (自動擴展)
行寬限制固定 133無限制

總結

文件拷貝插入空行失敗主因是 /n 應為 \n,輔以缺少文件打開檢查。改用 std::string + std::getline 更安全、無行寬限制。養成「檢查流狀態、用標準庫字符串」習慣。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved