代碼分析
ifstream in; ofstream out;
char buff[133];
in.open("infile.dat");
out.open("outfile.dat");
while (in.getline(buff, 133))
out << buff << "\n\n"; // 寫入雙換行
問題排查
- 文件不存在:
infile.dat 不在工作目錄,in 打開失敗進入 fail 狀態,循環不執行,outfile.dat 被創建但為空。
- 文件為空:同理,無數據讀取。
- 換行符:Windows 文本文件換行為
\r\n,getline 默認以 \n 分隔,可能殘留 \r。
- 緩衝區大小:行長超過 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";
}