"模板:程式設計:C++:檔案" 修訂間的差異
| 行 22: | 行 22: | ||
file << "This is a test!\n"; | file << "This is a test!\n"; | ||
| + | |||
| + | ===課堂練習=== | ||
| + | 將下列文字放入一個文字檔,再寫一程式將文字檔內容: | ||
| + | 1.秀在螢幕上 | ||
| + | 2.寫入另一個檔案中 | ||
| + | |||
| + | <pre> | ||
| + | 問題:印出一數N的質因數 | ||
| + | 做法: | ||
| + | 判斷2~(N-1)是否為N的因數,並且是否為質數 | ||
| + | |||
| + | (i迴圈開始) | ||
| + | 1.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,i若能整除N,則 | ||
| + | (j迴圈開始) | ||
| + | 1.1 使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數) | ||
| + | 1.2 使用一迴圈敘述,使用迭代變數j,下限值為2,上限值為i-1,若j可整除i,設定isPrime為false,跳出j迴圈 | ||
| + | (j迴圈結束) | ||
| + | 1.3 若isPrime為tru則輸出j | ||
| + | (i迴圈結束) | ||
| + | |||
| + | 2.結束 | ||
| + | |||
| + | 程式範例解答 | ||
| + | #include <iostream> | ||
| + | using namespace std; | ||
| + | void main(void){ | ||
| + | int n; | ||
| + | cout<<"請輸入"; | ||
| + | cin>>n; | ||
| + | for(int i=2;i<= n-1;i++ ){ | ||
| + | if(n%i==0){ | ||
| + | bool Isprime=true; | ||
| + | for(int j=2;j<=i-1&& Isprime;j++){ | ||
| + | if(i%j==0){ | ||
| + | Isprime=false; | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | if (Isprime){ | ||
| + | cout<<i<<endl; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | system("pause"); | ||
| + | } | ||
| + | </pre> | ||
這樣就可以將字串"This is a test!\n"寫入檔案。 | 這樣就可以將字串"This is a test!\n"寫入檔案。 | ||
於 2013年3月20日 (三) 23:27 的修訂
C++的檔案讀寫
((參考課本第16章))
我們所認知的檔案是放在儲存媒體(硬碟、網路硬碟、磁帶等)上的,可以透過檔案總管對檔案進行open、close、copy、delete等動作;實際上,在我們的作業系統中,“檔案“基本上不單純,檔案這個名詞被抽象化可代表作業系統中所有的裝置,如果是在可讀寫的儲存媒體上,那麼這個檔案是可讀寫的,若是在僅供讀取的裝置上(光碟機),那麼這個檔案就只能被讀取。因此,程式要存取裝置,只要對該裝置的代表檔案進行開啟,對該裝置檔案進行讀或寫的動作,這樣的做法,將裝置的存取動作簡單化成為對檔案的讀寫,不必特別針對每個裝置的特性來處理輸入或輸出的動作。
因此,在C++中,有所謂的輸出輸入的資料流(istream, ostream類別),從這2個類別再向下衍生出2個檔案的輸入輸出類別:ifstream與ofstream。 而fstream就同時衍生自ifstream與ofstrean,同時具備對檔案的讀寫能力。
檔案在操作上一定是先通過open()手段,指定一個欲開啟的檔案,在進行開檔的時候,可以指定要對檔案的操作型式,像是讀取、寫入、附加資料等。
檔案的讀取方式:1.讀取一定數量的字元到一個資料緩衝區(通常是一個字元陣列),2.讀取單一個字元,3,讀取文字檔案中的一整行到一個資料緩衝區。
檔案讀取練習: 使用本網頁的某一個程式範例來製作一個文字檔。
檔案的寫入方式最簡單,以前使用過的輸出cout本身就是一個檔案,當我們開啟一個檔案要進行寫入動作的時候,只需要將檔案的物件參考,比方說是file,替換掉cout即可,例如:
cout << "This is a test!\n";
換成:
file << "This is a test!\n";
課堂練習
將下列文字放入一個文字檔,再寫一程式將文字檔內容: 1.秀在螢幕上 2.寫入另一個檔案中
問題:印出一數N的質因數
做法:
判斷2~(N-1)是否為N的因數,並且是否為質數
(i迴圈開始)
1.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,i若能整除N,則
(j迴圈開始)
1.1 使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數)
1.2 使用一迴圈敘述,使用迭代變數j,下限值為2,上限值為i-1,若j可整除i,設定isPrime為false,跳出j迴圈
(j迴圈結束)
1.3 若isPrime為tru則輸出j
(i迴圈結束)
2.結束
程式範例解答
#include <iostream>
using namespace std;
void main(void){
int n;
cout<<"請輸入";
cin>>n;
for(int i=2;i<= n-1;i++ ){
if(n%i==0){
bool Isprime=true;
for(int j=2;j<=i-1&& Isprime;j++){
if(i%j==0){
Isprime=false;
break;
}
}
if (Isprime){
cout<<i<<endl;
}
}
}
system("pause");
}
這樣就可以將字串"This is a test!\n"寫入檔案。