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

C++ iostream 層次結構:文件拷貝邏輯與常見錯誤

     編輯:程式設計疑難解答

代碼分析

ifstream in; ofstream out;
char buff[133];
in.open("infile.dat");
out.open("outfile.dat");
while (in.getline(buff, 133))
    out << buff << "\n\n";  // 寫入雙換行

問題排查

  1. 文件不存在:infile.dat 不在工作目錄,in 打開失敗進入 fail 狀態,循環不執行,outfile.dat 被創建但為空。
  2. 文件為空:同理,無數據讀取。
  3. 換行符:Windows 文本文件換行為 \r\n,getline 默認以 \n 分隔,可能殘留 \r。
  4. 緩衝區大小:行長超過 132 字符會被截斷。

修正建議

if (!in.is_open()) { cerr << "無法打開輸入文件"; return 1; }
if (!out.is_open()) { cerr << "無法創建輸出文件"; return 1; }
string line;
while (getline(in, line)) {  // 用 string 自動適應行長
    out << line << "\n\n";
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved