c++把檔案視為無結構的位元組流,所以記錄等說法在c++檔案中是不存在的。
1.建立順序訪問檔案
#include
#include
#include
using namespace std;
int main()
cout << "enter the account, name, and balance,/n"
<< "enter end-of-fail to end input./n?";
int account;
char name[ 30 ];
double balance;
while ( cin >> account >> name >> balance )
system("pause");
檔案中新增資料)。資料可以寫入檔案的任務地方
ios::in 開啟檔案以便輸入
ios::out 開啟檔案以便輸出
ios::trunc 刪除檔案中現有內容(這也是ios::out的預設操作)
ios::binary 開啟檔案以進行二進位制(也就是非文字)格式輸入或輸出
常見程式設計錯誤:開啟乙個使用者想保留資料的現有檔案進行輸出(以ios::out方式)。這種操作會在不給出任
何警告訊息的情況下刪除檔案內容。
常見程式設計錯誤:用錯誤的ofstream物件指定檔案。
可以生成obtream物件但不開啟特定檔案,可以在後期關聯檔案與物件。例如宣告
ofstream outclientfiel;
生成ofstream物件ourclientfile。ofstream成員函式open
outclientfile.open("clients.txt",ios::out);
開啟檔案並將其與現有ofstream物件關聯。
常見程式設計錯誤:在引用檔案之前忘記開啟檔案。
占用的資源。這種方法還可以使程式更清晰。
2.讀取順序訪問檔案中的資料
#include
#include
#include
#include
using namespace std;
void outputline( int, const char * const, double );
int main()
int account;
char name[ 30 ];
double balance;
cout << setiosflags( ios::left ) << setw( 10 ) << "account"
<< setw( 13 ) << "name" << "balance/n"
<< setiosflags( ios::fixed | ios::showpoint );
while ( inclientfile >> account >> name >> balance )
outputline( account, name, balance );
system("pause");
return 0;
}void outputline( int acct, const char * const name, double bal )
良好程式設計習慣:如果檔案內容不能修改,檔案就只能開啟用於輸入(用ios::in)。這可以避免不慎改動文
件內容。這是最低訪問許可權原則的另乙個例子。
每個istream物件有乙個get指標,表示檔案中下乙個輸入相同的位元組數,每個ostream物件有乙個put指標,表示檔案中下乙個輸出相同的位元組數。語句
inclientfile.sekg(0);
將檔案位置指標移到檔案開頭(位置0),連線inclientfile。seekg的引數通常為long型別的整數。
clntdata.h標頭檔案:
#ifndef clntdata_h
#define clntdata_h
struct clientdata
;#endif
temple.cpp工程檔案
#include
#include
#include
#include
#include "clntdata.h"
using namespace std;
int enterchoice();
void textfile( fstream & );
void updaterecord( fstream & );
void newrecord( fstream& );
void deleterecord( fstream& );
void outputline( ostream&, const clientdata & );
int getaccount( const char * const );
enum choices;
int main()
int choice;
while ( ( choice = enterchoice() ) != end )
inoutcredit.close();
}system("pause");
return 0;
}int enterchoice()
void textfile( fstream &readformfile )
outprintfile << setiosflags( ios::left ) << setw( 10 )
<< "account" << setw( 16 ) << "last name" << setw( 11 )
<< "first name" << resetiosflags ( ios::left )
<< setw( 10 ) << "balance" << endl;
readformfile.seekg( 0 );
clientdata client;
readformfile.read( reinterpret_cast< char * >( &client ), sizeof( clientdata ) );
while ( !readformfile.eof() )
}void updaterecord( fstream &updatefile )
else
}void newrecord( fstream &insertinfile )
else
cerr << "account # " << account
<< "already contains information." << endl;
}void deleterecord( fstream &deleteformfile )
;deleteformfile.seekp( ( account - 1 ) * sizeof( clientdata ) );
deleteformfile.write( reinterpret_cast< char *>( &blankclient),sizeof( clientdata ) );
cout << "account #" << account << "deleted." << endl;
}else
cout << "account #" << account << "is empty" << endl;
}void outputline( ostream &output, const clientdata &c )
int getaccount( const char * const prompt )
while ( account < 1 || account > 100 );
return account;
}
C 檔案處理
寫了乙個遊戲資源編輯器 中間真是挫折不少,首先是c 到c 的轉變,主要是檔案處理上的不適應,c c 程式讀寫圖形檔案相當方便 主要是win 32 api本來就是為c c 提供的 c 讀寫起來就有點不太順,我總是想用win32 api中的結構體去讀取,那樣各類資料就自動填充好了,不過c 的塊讀取只能填...
C 檔案處理
c 把檔案視為無結構的位元組流,所以記錄等說法在c 檔案中是不存在的。1.建立順序訪問檔案 include include include using namespace std int main cout enter the account,name,and balance,n enter end...
C 檔案處理
這幾天在研究c 檔案處理方面的東西。綜述 c file i o 主要用到以下幾個類 1.ifstream 檔案讀 reading only 2.ofstream 檔案寫 writing only 3.fstream 讀寫均可。宣告以上類的變數即可對檔案操作。將乙個檔案與以上乙個類變數關聯即可。注意包...