C++檔案操作函式詳解
轉載:http://blog.csdn.net/mafuli007/article/details/7271975
C++通過以下幾個類支援檔案的輸入輸出
(1) ofstream:寫操作,輸出檔案類;
(2) ifstream:讀操作,輸入檔案類;
(3) fstream:可同時讀寫的檔案類。
1. open函式:開啟檔案
函式原型:void open(const char*filename,int mode,int access);
引數說明:filename: 要開啟的檔名
mode: 要開啟檔案的方式
access: 開啟檔案的屬性
開啟檔案的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下:
ios::app: 以追加的方式開啟檔案
ios::ate: 檔案開啟後定位到檔案尾,ios:app就包含有此屬性
ios::binary: 以二進位制方式開啟檔案,預設的方式是文字方式。兩種方式的區別見前文
ios::in: 檔案以輸入方式開啟
ios::out: 檔案以輸出方式開啟
ios::nocreate: 不建立檔案,所以檔案不存在時開啟失敗
ios::noreplace:不覆蓋檔案,所以開啟檔案時如果檔案存在失敗
ios::trunc: 如果檔案存在,把檔案長度設為0
可以用“或”把以上屬性連線起來,如ios::out|ios::binary
開啟檔案的屬性取值是:
0:普通檔案,開啟訪問
1:只讀檔案
2:隱含檔案
4:系統檔案
例如:以二進位制輸入方式開啟檔案c:\config.sys
fstreamfile1;
file1.open("c:\\config.sys",ios::binary|ios::in,0);
ofstream file;
file.open ("example.bin", ios::out |ios::app | ios::binary);
2. close函式
函式原型:void close()
3. 二進位制檔案(Binary files)
在二進位制檔案中,使用<< 和>>,以及函式(如getline)來操作符輸入和輸出資料,沒有什麼實際意義,雖然它們是符合語法的。
檔案流包括兩個為順序讀寫資料特殊設計的成員函式:write 和 read。第一個函式 (write) 是ostream 的一個成員函式,都是被ofstream所繼承。而read 是istream 的一個成員函式,被ifstream 所繼承。類 fstream 的物件同時擁有這兩個函式。它們的原型是:
write ( char *buffer, streamsize size );
read ( char * buffer, streamsize size );
這裡 buffer 是一塊記憶體的地址,用來儲存或讀出資料。引數size 是一個整數值,表示要從快取(buffer)中讀出或寫入的字元數。
[cpp] view plain copy print?- // reading binary file
- #include <iostream>
- #include <fstream.h>
- constchar * filename = "example.txt";
- int main () {
- char * buffer;
- long size;
- ifstream file (filename, ios::in|ios::binary|ios::ate);
- size = file.tellg();
- file.seekg (0, ios::beg);
- buffer = newchar [size];
- file.read (buffer, size);
- file.close();
- cout << "the complete file is in a buffer";
- delete[] buffer;
- return 0;
- }
寫檔案舉例:
[cpp] view plain copy print?- // writing on a text file
- #include <fiostream.h>
- int main () {
- ofstream examplefile ("example.txt");
- if (examplefile.is_open()) {
- examplefile << "This is a line.\n";
- examplefile << "This is another line.\n";
- examplefile.close();
- }
- return 0;
- }
讀檔案舉例
[cpp] view plain copy print?- // reading a text file
- #include <iostream.h>
- #include <fstream.h>
- #include <stdlib.h>
- int main () {
- char buffer[256];
- ifstream examplefile ("example.txt");
- if (! examplefile.is_open())
- { cout << "Error opening file"; exit (1); }
- while (! examplefile.eof() ) {
- examplefile.getline (buffer,100);
- cout << buffer << endl;
- }
- return 0;
- }
C++操作檔案舉例
[cpp] view plain copy print?- #include <fstream>
- #include <iostream>
- usingnamespace std;
- int main()
- {
- constint SZ=100;
- char buf[SZ];
- {
- ifstream in;
- in.open("example.cpp",ios::in);
- ofstream out;
- out.open("example.out");
- int j=1;
- while(in.get(buf,SZ))
- {
- in.get();
- cout<<buf<<endl;
- out<<j++<<":"<<buf<<endl;
- }
- }
- ifstream in("example.out");
- while(in.getline(buf,SZ))
- {
- char *cp=buf;
- while(*cp!=':')
- {
- ++cp;
- }
- cp+=2;
- cout<<cp<<endl;
- }
- system("pause");
- return 0;
- }
C++中提供了移動檔案指標的成員函式,從而對檔案的進行隨機地讀寫。類istream針對讀指標提供3個成員函式:
tellg()//返回輸入檔案讀指標的當前位置;
seekg(檔案中的位置)//將輸入檔案中的讀指標移動到指定位置
seekg(位移量,參照位置)//以參照位置為基準移動若干位元組
其中參照位置是列舉值:
ios::beg//從檔案開頭計算要移動的位元組數
ios::cur//從檔案指標的當前位置計算要移動的位元組數
ios::end//從檔案的末尾計算要移動的位元組數
如果參照位置省略,則預設為beg。而類ostream針對寫指標提供的3個成員函式:
tellp()//返回輸出檔案寫指標的當前位置;
seekp(檔案中的位置)//將輸出檔案中的寫指標移動到指定位置
seekp(位移量,參照位置)//以參照位置為基準移動若干位元組
1
#include <iostream> #include <fstream> #include <cmath> using namespace std;
int main()
{
ifstream in;
in.open(url,ios::app| ios::binary); if(!in.is_open()) { cout<<"open file is failed"; return 1; }
char* buffer = new char[100];
while(!in.eof())
{
in.read(buffer,10);// 讀完10個位元組到buffer中,檔案指標在第10個位元組;
in.seekg(1,ios::cur);// 移動一個位元組,從11個位元組讀取到buffer中;
}
in.close();
return 0;
}
相關推薦
C++檔案操作函式詳解
轉載:http://blog.csdn.net/mafuli007/article/details/7271975 C++通過以下幾個類支援檔案的輸入輸出 (1) ofstream:寫操作,輸出檔案類; (2) ifstream:讀操作,輸入檔案
c語言檔案操作函式詳解
C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標準庫函式來實現。檔案操作標準庫函式有: 檔案的開啟操作 fopen 開啟一個檔案 檔案的關閉操作 fclose 關閉一個檔案 檔案的讀寫操作 fgetc 從檔案中讀取一個字元
LoadRunner檔案操作函式詳解
涉及的函式彙總: 檔案的開啟操作 fopen 開啟一個檔案 檔案的關閉操作 fclose 關閉一個檔案 檔案的讀寫操作 fgetc 從檔案中讀取一個字元 fputc 寫一個字元到檔案中去
Android NDK——必知必會之JNI的C++操作函式詳解和小結(三)
引言 上一篇講解了一些關於JNI和NDK的必知必會的理論知識和機制,由於篇幅問題把關於JNI的重要的函式放到這篇,具體使用留到下一篇,此係列文章基連結: 一、JNI中的函式概述 在JNI層我們基本上都是通過env指標來呼叫jni.h標頭檔案裡定義的函式,JNI
C語言 把字串寫入檔案 fprintf函式詳解
把把字串寫入檔案,基本示例如下: FILE *fp; char s[]= "hello world!"; char c = '\n'; fp = fopen("file.txt","a");
基於C++的circshift 函式詳解
函式講解 circshift函式是matlab中表示迴圈移位的函式,呼叫形式如下:B= circshift(A,K,m); 輸入引數解釋如下: A表示待移位的向量或矩陣; K表示所移位數,可以是數字,也可以是二維陣列,若是數字則可以和m協同作用來決定是行移
unity 在移動平臺中,檔案操作路徑詳解
相信大家在開發過程中,難免會儲存一些檔案在客戶端進行本地化操作。 如:配置檔案,狀態檔案,Assetbundle檔案等等... 最近總有人問我: 1.儲存了一個xml在客戶端,能讀取裡面的資料,可是不能修改,甚至一修改就報錯... 2.我在電腦上操作檔案(xm
C++ 檔案讀寫詳解(七)(ofstream,ifstream,fstream)
void fileRead() { using namespace std; ifstream fin; /** qwer:asdf:zxc:1234: gfd:jkl:mnb: */ //開啟檔案 fi
c語言strtod()函式詳解
前言 網上有很多關於strtod()函式的文章,不過大部分都是用strtod()函式轉換一個字元 char *str = "111.11"; char *target; double ret; ret = strtod(str, &target);
C++檔案操作函式-讀寫檔案
檔案讀寫是基礎中的基礎,關於此類知識的文章非常多,但還是想根據自己的使用心得去總結這麼一些內容。 1.檔案的開啟和關閉 開啟和關閉 fopen()函式 FILE *fopen(char *filename, *type); filename:可以包
C++中建構函式詳解
c++類的建構函式詳解 一、 建構函式是幹什麼的 class Counter { public: // 類Counter的建構函式 // 特點:
【C++ 】 format 函式詳解
Format是一個很常用,卻又似乎很煩的方法,以下是它的完整概貌,以供大家查詢之用:一、字串首先看它的宣告:function Format(const Format: string; const Args: array of const): string; overload;事實上Format方法有兩個種形式
C++檔案讀寫詳解(ofstream,ifstream,fstream)
在看C++程式設計思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結: 這裡主要是討論fstream的內容: #include <fstream> ofstrea
C++ 中malloc函式詳解(轉載)
一、原型:extern void *malloc(unsigned int num_bytes); 標頭檔案:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 與 malloc.h
linux C —— 檔案操作函式
chmod int chmod(const char *path, mode_t mode) 將檔案read的檔案許可權變成所有者有讀寫許可權,其他使用者只有讀的許可權。這和shell指令中的chmod有相同的功效。 #include <stdi
linux C程式設計--popen函式詳解
#include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); 描述 popen() 函式 用 建立管道 的 方式 啟動一個 程序, 並呼叫 shell. 因為 管道
c++檔案讀寫詳解
引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。mode有下列幾種形態字串:r 開啟只讀檔案,該檔案必須存在。r+ 開啟可讀寫的檔案,該檔案必須存在。w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。w+ 開啟可讀寫檔案,若檔案存在則檔案長
C++ 檔案讀寫詳解(ofstream,ifstream,fstream)
文章轉自:http://blog.csdn.net/kingstar158/article/details/6859379 這裡主要是討論fstream的內容: #include <fstream> ofstream //檔案寫操作
android檔案操作路徑詳解
1:內部儲存 data資料夾就是我們常說的內部儲存,當我們開啟data資料夾之後(沒有root的手機不能開啟該資料夾) data下還有許多資料夾 一個資料夾是app資料夾,app資料夾裡存放著我們所有安裝的app 的ap
C++檔案讀寫詳解(ofstream,ifstream,fstream
在看C++程式設計思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結: 這裡主要是討論fstream的內容: [java] view plain copy p