1. 程式人生 > >c++文件的讀寫

c++文件的讀寫

open PE 數組 binary clu 讀寫文件 main 個數字 AC

c++文件的讀寫

1.文本方式的寫文件

#include <iostream>
#include <fstream>
using namespace std;

int main(){
  int ar[] = {1123,123,43,45,63,43,2,3};
  //方法1,ios::out含義是也寫的方式打開流
  ofstream ofile1("./test.txt", ios::out);
  //方法2
  ofstream ofile2;
  ofile2.open("./test.txt");                                                           
  if
(!ofile1){//文件打開失敗 cerr << "open err" << endl; exit(1); } for(int i = 0; i < sizeof(ar) / sizeof(int); ++i){ ofile1 << ar[i] << " "; } ofile1.close(); }

2.文本方式的讀文件

#include <iostream>
#include <fstream>
using namespace std;

int main(){
  int ar[10
]; ifstream ifile("./test.txt",ios::in); if(!ifile){ cerr << "open err" << endl; exit(1); } for(int i = 0; i < 10; ++i){ //用空格分割讀進數組 ifile >> ar[i]; } }

3.二進制方式的寫文件

#include <iostream>
#include <fstream>
using namespace std; int main(){ int ar[] = {11,232,123123,1223,455,4,4,5,56,4,33}; ofstream ofile("./text2.txt", ios::out | ios::binary); if(!ofile){ cerr << "open err" << endl; } ofile.write((char*)ar, sizeof(ar)); ofile.close(); }

4.二進制方式的讀文件

#include <iostream>
#include <fstream>
using namespace std;

int main(){
  int ar[10];
  ifstream ifile("./text2.txt",ios::in | ios::binary);
  if(!ifile){
    cerr << "open err" << endl;
  }
  ifile.read((char*)ar, sizeof(ar));
  ifile.close();
}

5.按位置讀寫文件

  • 文本方式的按位置讀

假設文件的內容:【1 12 222 3232 2232323】,每個數字節數都不一樣,不能正確讀出想要的。

解決辦法,使用二進制方式的按位置讀。

#include <iostream>
#include <fstream>
using namespace std;

int main(){                                                                              
  ifstream ifile("./test.txt", ios::in);                                                 
  if(!ifile){                                                                            
    cerr << "open err" << endl;                                                          
  }                                                                                      
  int index;                                                                             
  int value;                                                                             
  while(1){                                                                              
    cin >> index;                                                                        
    ifile.seekg(index, ios::beg); //移動指針                                                      
    ifile >> value;                                                                      
    cout << value << endl;                                                               
  }                                                                                      
}  
  • 進制方式的按位置讀
#include <iostream>
#include <fstream>
using namespace std;
  
int main(){
  ifstream ifile("./test.txt", ios::in | ios::binary);
  if(!ifile){
    cerr << "open err" << endl;
  }
  int index;
  int value;
  while(1){
    cin >> index;
    ifile >> value;
    cout << value << endl;
  }
}

c++文件的讀寫