c++文件的讀寫

来源:https://www.cnblogs.com/xiaoshiwang/archive/2018/06/05/9142301.html
-Advertisement-
Play Games

c++文件的讀寫 1.文本方式的寫文件 3.二進位方式的寫文件 c++ include include using namespace std; int main(){ int ar[] = {11,232,123123,1223,455,4,4,5,56,4,33}; ofstream ofile ...


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;
  }
}

6.文件與對象的例子

在構造函數里讀取文件A,用文件A里的數據初始化對象;在析構函數里把對象的數據寫入文件A。

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

class C{
  friend ostream& operator<<(ostream&, const C&);
public:
  C() : shi(0), xu(0){
    ifstream ifile("./data.dat", ios::in);
    if(!ifile){
      cerr << "open err" << endl;
      exit(1);
    }
    ifile >> shi >> xu;
    ifile.close();
  }
  C(int i, int j) : shi(i), xu(j){}
  ~C(){
    ofstream ofile("./data.dat", ios::out);
    if(!ofile){
      cerr << "open err" << endl;
      exit(1);
    }
    ofile << shi << " " << xu;
    ofile.close();
  }
  C(int i, int j) : shi(i), xu(j){}
  ~C(){
    ofstream ofile("./data.dat", ios::out);
    if(!ofile){
      cerr << "open err" << endl;
      exit(1);
    }
    ofile << shi << " " << xu;
    ofile.close();
  }
  void setC(int i, int j){
    shi = i;
    xu = j;
  }
private:
  int shi;
  int xu;
};

ostream& operator<<(ostream& out, const C& c){
  out << "(" << c.shi << "," << c.xu << ")";
  return out;
}
int main(){
  C c;
  cout << c << endl;
  c.setC(10,22);
  cout << c << endl;
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文通過一個簡易安全認證示例的開發實踐,理解過濾器和攔截器的工作原理。 很多文章都將過濾器(Filter)、攔截器(Interceptor)和監聽器(Listener)這三者和Spring關聯起來講解,並認為過濾器(Filter)、攔截器(Interceptor)和監聽器(Listener)是Spr ...
  • 閱讀本文約“2分鐘” 熟悉Java的朋友都知道虛擬機還有編譯器,那麼它們各自主要的功能是什麼?誰比較重要呢?讓我們來瞭解一下這兩位美女的故事。 虛擬機可以說就是Java,她能讓程式運行起來。 但是編譯器卻能產生文件,畢竟java是直譯語言,如果需要一邊運行一邊解譯純文字是不能運行得快速的,而我們程式 ...
  • 5.1.cms後臺修改密碼功能完成 (1)新建app/forms.py (2)cms/forms.py (3)cms/views.py (4)新建static/common/zlajax,js (5)cms/js/resetpwd.js (6)cms/cmc_base.html (7)cms/cms ...
  • 一、動態代理 1.1、代理模式 什麼是代理模式及其作用? Proxy Pattern(即:代理模式),23種常用的面向對象軟體的設計模式之一。 代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問。 在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間 ...
  • 前言 從去年的3月份起我就在開始讀《Effective Java 第二版》,當然,我讀的是中文版的;可能是我理解能力還不行,對於書中的內容總是感覺理解困難;就拿第一章的內容「創建和銷毀對象」來說吧,這是我讀的次數最多的一章,想必原因大家也是明白的,每次我讀不下去的時候,我就從頭開始讀,所以,現在我對 ...
  • 1.首先安裝mysql 具體教程可以參考https://blog.csdn.net/zhouzezhou/article/details/52446608 註意安裝產品的時候記得選擇MySQL Connector C,如圖 2.安裝好mysql之後,就開始配置,點擊項目->點擊項目屬性,如圖: 3. ...
  • 也許是最近模擬題打多了的緣故,我發現自己漸漸變得比較毒瘤起來,當然這也是有一定的好處的,因為從中我也學到了一些處理字元串的正確姿勢,今天我們就來講一 講如何用函數getline來讀入一整行字元串進行處理。或者他的一些變體。 首先我們先需要知道為什麼我們要學習這個函數,是這樣的,相信大家都應該知道以前 ...
  • Spring Boot 2.0 的推出又激起了一陣學習 Spring Boot 熱,就單從我個人的博客的訪問量大幅增加就可以感受到大家對學習 Spring Boot 的熱情,那麼在這麼多人熱衷於學習 Spring Boot 之時,我們自己也在思考: Spring Boot 為什麼帶來了這麼大的變革。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...