檔案排版(文字檔案讀寫)
前言
本人正在學習檔案的輸入與輸出,寫下此篇部落格充當學習筆記
問題回顧
英文電影中參演人員名單一般以某種方式進行排版顯示。給定一個未排版的檔案listin.txt,該檔案中每行參演人員名單由冒號ldquo:rdquo分隔成前後兩部分,但格式雜亂無章,單詞(由除空格和水平製表符之外的其它字元構成)之間可能有多個空格或水平製表符分隔。編寫程式,要求將其按如下排版規則排版輸出到另一個檔案listout.txt中:
1.從標準輸入整數,作為排版後所有各行冒號在一行中的固定位置,輸入的整數肯定大於排版後所有各行冒號前的字元個數,位置從1開始計數;
2.冒號左邊的單詞串以行頭為基準左對齊,左邊的最後一個單詞與冒號之間以空格填充;冒號右邊的單詞串以冒號基準左對齊,最後一個單詞後只有回車換行符,不再有其它字元;
3.冒號左右兩邊的單詞間都只有一個空格分隔,並且要求冒號兩邊至少各有一個空格。
假設輸入檔案中每行字元個數不超過100。
【輸入形式】
待排版的參演人員名單從當前目錄下的listin.txt檔案中讀入,表示冒號位置的整數從標準輸入讀入。
【輸出形式】
排版後的參演人員名單輸出到當前目錄下的listout.txt中。
【輸入樣例】
假設檔案listin.txt內容為:
Digital Intermediate by : EFILM
Supervising Digital Colorist : STEVEN J. SCOTT
Second Colorist :ANDREW FRANCIS
Digital Intermediate Producer:LOAN PHAN
Digital Intermediate Editor: DEVON MILLER
表示冒號固定位置的整數為:
40
【輸出樣例】
檔案listout.txt中的內容應為:
【樣例說明】
輸入的檔案listin.txt中有五行參演人員名單,要求排版後冒號位於第40個字元的位置,按照上述排版規則輸出到檔案listout.txt中。
程式碼實現
#include<iostream>
#include<fstream>
#include<iomanip>//控制輸出格式
#include<string>
using namespace std;
int main(){
int location;
cin >> location;//設定冒號固定的位置
ifstream infile("listin.txt");
ofstream outfile("listout.txt");
string str;
while (getline(infile,str))//讀取檔案中的一行,設定為按行讀取
{
bool flag = true;//判斷是在“:”前還是之後
string ocu, name;//分別表示職位和姓名
for (int i = 0; i < str.length();i++){
if(str[i]==':'){
flag = false;
continue;
}
if (flag == true){
if(str[i]!=' '&&str[i]!='\t'){//注意題目中有說製表符
ocu += str[i];
if(str[i+1]==' '||str[i+1]=='\t')
ocu += ' ';
}
}
else{
if(str[i]!=' '&&str[i]!='\t'){
name += str[i];
if(str[i+1]==' '||str[i+1]=='\t')
name += ' ';
}
}
}
outfile << setw(location - 1) << left << ocu << ':' << ' ' << name<<'\n';//輸出到outfile檔案中去,設定location-1個寬度,":"的位置自然就是location的位置了,"left"表示左對齊,標頭檔案為iomanip
}
return 0;
}
可以一步步除錯看看執行過程
相關文章
- VBA建立文字檔案、讀寫文字檔案
- C#讀取文字檔案和寫文字檔案C#
- 【Java】讀寫文字檔案Java
- 檔案讀寫
- 【MATLAB】讀取和寫入文字檔案Matlab
- Golang 讀、寫檔案Golang
- keras讀寫檔案Keras
- perl 讀寫檔案
- 檔案讀寫IO
- 檔案的讀寫
- 檔案排版 題解
- Qt學習之路(57): 文字檔案讀寫薦QT
- 檔案操作之按照行讀寫檔案
- python 讀取文字檔案Python
- 讀取檔案流並寫入檔案流
- 「Python」:檔案讀寫Python
- Python——檔案讀寫Python
- Python 讀寫檔案Python
- C++檔案讀寫C++
- 普通檔案的讀寫
- c fopen檔案讀寫
- 讀寫iOS XML檔案iOSXML
- Python讀寫檔案Python
- C++讀寫檔案C++
- Python:讀寫檔案(I/O) | 組織檔案Python
- Perl讀寫檔案&字串操作字串
- java 讀寫 ini 配置檔案Java
- C++讀寫檔案操作C++
- Golang對檔案讀寫操作Golang
- C++檔案讀寫操作C++
- python讀寫excel檔案PythonExcel
- c風格讀寫檔案
- python檔案讀寫操作Python
- C/C++ 檔案讀寫C++
- Java 字元流檔案讀寫Java字元
- IO流的檔案讀寫
- Java檔案操作 讀寫操作Java
- R讀寫檔案略記