亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++流操作之fstream用法介紹

2020-01-26 15:51:31
字體:
來源:轉載
供稿:網友

在Windows平臺對文件進行存取操作可選的方案有很多,如果采用純C,則需要用到File*等,當然也可以直接調用Windows API來做;如果采用C++,首先想到的就是文件流fstream。雖然在COM層面上,我們還可以使用IStream來實現文件的讀寫,其效率也非常高。不過本文僅對C++流操作做簡單的探討,相比于Windows API或IStream,C++的流操作通用性更好一些,因為你能輕松將代碼移植到其它平臺上。

fstream有兩個派生類,即ifstream和ofstream,分別對應輸入文件流、輸出文件流。在使用它們之前,必須將它們的頭文件包含到你的cpp文件中。

創建一個文件流的方法很簡單:

ifstream fin; 
fin.open("C:/filename.txt"); 
這樣就創建了一個輸入文件流fin,它對應的文件是C盤根目錄下的filename.txt。實際上,open方法還包含一個參數mode,用以指定其打開方式。
ios::in 以讀取方式打開文件
ios::out 以寫入方式打開文件
ios::ate 存取指針在文件末尾
ios::app 寫入時采用追加方式
ios::trunc 寫入時抹去舊數據
ios::binary 以二進制方式存取
上面的代碼并未指定任何打開方式,則采用默認參數:輸入文件流即ios::in,輸出文件流即ios::out。一般在需要組合特殊的mode才顯式指定,比如:
ios::in | ios::binary; //以二進制方式讀取文件

除此之外,還可以在構造時指定相應的文件路徑和名稱,讓創建過程一步到位。上述代碼可改寫為:

ifstream fin("C:/filename.txt");
與open方法相反的是close方法,它的作用與open正好相反。open是將文件流對象與外設中的文件關聯起來,close則是解除二者的關聯。但是需要注意的是,close還起到清空緩存的作用。最好讓open方法與close方法成對出現。

創建并打開一個文件流后,就能像操作標準I/O那樣使用流插入操作符(<<)與流提取操作符(>>)。對于輸入文件流來說,可以調用getline函數從文件流中讀取一整行數據,這樣就可以讀入含有空格的字符串。

下面是一個例子,該例的作用是讀取一個STLA格式的文件。STL是一種常用快速成像文件格式,其格式非常簡單,特別是ASCII版本(即STLA)。代碼如下所示:

stdafx.h

復制代碼 代碼如下:

// stdafx.h : include file for standard system include files, 
// or project specific include files that are used frequently, but 
// are changed infrequently 
// 

#pragma once 

#include "targetver.h" 

#include <stdio.h> 
#include <tchar.h> 
//added 
#include <iostream> 
#include <sstream> 
#include <fstream> 
#include <string> 
#include <vector> 
using namespace std; 

// TODO: reference additional headers your program requires here 
readstla.cpp

// readstla.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 

struct facet { 
    float normal[3]; 
    float vertex[3][3]; 
}; 

int _tmain(int argc, _TCHAR* argv[]) 

    if (argc < 2) { 
        printf("specify an input file!/n"); 
        return 1; 
    } 
    ifstream in(argv[1]); 
    if (!in.is_open()) { 
        printf("fail to open file!/n"); 
        return 1; 
    } 
    //var 
    vector<facet> solid; 
    string line; 
    string word; 
    //check format 
    getline(in, line); 
    if (line.find("solid") != 0) { 
        printf("wrong file format!/n"); 
        in.close(); 
        return 1; 
    } 
    while (getline(in, line)) { 
        if (line.find("facet normal") != string::npos) { 
            facet f; 
            //read normal 
            stringstream ns(line); 
            ns >> word; //eat "facet" 
            ns >> word; //eat "normal" 
            ns >> f.normal[0] >> f.normal[1] >> f.normal[2]; 
            //read vertices 
            getline(in, line); //"outer loop" 
            for (int i = 0; i < 3; i++) { 
                getline(in, line); 
                stringstream vs(line); 
                vs >> word; //eat "vertex" 
                vs >> f.vertex[i][0] >> f.vertex[i][1] >> f.vertex[i][2]; 
            } 
            getline(in, line); //"endloop" 
            getline(in, line); //"endfacet" 
            solid.push_back(f); 
        } 
    } 
    in.close(); 
    //output 
    int cnt = solid.size(); 
    printf("read %d facet/n", cnt); 
    for (int i = 0; i < cnt; i++) { 
        facet& f = solid[i]; 
        printf("/nfacet %d:/nnormal = (%f, %f, %f)/n", / 
                       i+1, f.normal[0], f.normal[1], f.normal[2]); 
        for (int j = 0; j < 3; j++) { 
            printf("vertex[%d] = (%f, %f, %f)/n", / 
                              j+1, f.vertex[j][0], f.vertex[j][1], f.vertex[j][2]); 
        } 
    } 
    return 0; 
}

測試文件為:
cube_corner.stl
復制代碼 代碼如下:


solid cube_corner 
  facet normal 0.0 -1.0 0.0 
    outer loop 
      vertex 0.0 0.0 0.0 
      vertex 1.0 0.0 0.0 
      vertex 0.0 0.0 1.0 
    endloop 
  endfacet 
  facet normal 0.0 0.0 -1.0 
    outer loop 
      vertex 0.0 0.0 0.0 
      vertex 0.0 1.0 0.0 
      vertex 1.0 0.0 0.0 
    endloop 
  endfacet 
  facet normal 0.0 0.0 -1.0 
    outer loop 
      vertex 0.0 0.0 0.0 
      vertex 0.0 0.0 1.0 
      vertex 0.0 1.0 0.0 
    endloop 
  endfacet 
  facet normal 0.577 0.577 0.577 
    outer loop 
      vertex 1.0 0.0 0.0 
      vertex 0.0 1.0 0.0 
      vertex 0.0 0.0 1.0 
    endloop 
  endfacet 
endsolid 

輸入結果為:

read 4 facet 

facet 1: 

normal = (0.000000, -1.000000, 0.000000) 
vertex[1] = (0.000000, 0.000000, 0.000000) 
vertex[2] = (1.000000, 0.000000, 0.000000) 
vertex[3] = (0.000000, 0.000000, 1.000000) 

facet 2: 

normal = (0.000000, 0.000000, -1.000000) 
vertex[1] = (0.000000, 0.000000, 0.000000) 
vertex[2] = (0.000000, 1.000000, 0.000000) 
vertex[3] = (1.000000, 0.000000, 0.000000) 

facet 3: 
normal = (0.000000, 0.000000, -1.000000) 
vertex[1] = (0.000000, 0.000000, 0.000000) 
vertex[2] = (0.000000, 0.000000, 1.000000) 
vertex[3] = (0.000000, 1.000000, 0.000000) 

facet 4: 
normal = (0.577000, 0.577000, 0.577000) 
vertex[1] = (1.000000, 0.000000, 0.000000) 
vertex[2] = (0.000000, 1.000000, 0.000000) 
vertex[3] = (0.000000, 0.000000, 1.000000) 
Press any key to continue . . . 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品精品一区二区三区午夜版| 国产成人一区二区在线| 国产视频亚洲视频| 亚洲三级黄色在线观看| 91地址最新发布| 欧美黑人巨大精品一区二区| 亚洲国产精品久久精品怡红院| 亚洲黄页视频免费观看| 中文字幕在线成人| 亚洲综合精品一区二区| 最近2019年中文视频免费在线观看| 欧美成人亚洲成人日韩成人| 在线观看国产精品日韩av| 国产成人精品免高潮在线观看| 亚洲国产黄色片| 亚洲人午夜精品免费| 国产色综合天天综合网| 欧美激情第一页xxx| 成人免费视频网址| 亚洲欧洲美洲在线综合| 一区二区三区国产视频| 一区二区三区在线播放欧美| 国产精品亚洲自拍| 亚洲欧美另类国产| 91精品久久久久久久久久久| 色偷偷9999www| 亚洲乱码国产乱码精品精| 日韩高清av一区二区三区| 亚洲自拍偷拍网址| 色一情一乱一区二区| 国产日韩欧美综合| 成人免费视频a| 蜜月aⅴ免费一区二区三区| 国产欧美一区二区三区在线| 亚洲色在线视频| 亚洲国产天堂久久综合| 久久在线视频在线| 亚洲国产三级网| 国产综合香蕉五月婷在线| 26uuu国产精品视频| 亚洲乱码国产乱码精品精天堂| 国产精品96久久久久久又黄又硬| 97精品一区二区三区| 亚洲精品永久免费| 久久精品一区中文字幕| 国产精品久久999| 亚洲韩国日本中文字幕| www.美女亚洲精品| 97超碰国产精品女人人人爽| 91精品国产91| 亚洲国产成人av在线| 久久久久久久一区二区三区| 国产精品久久久久7777婷婷| 97国产一区二区精品久久呦| 中文字幕欧美精品日韩中文字幕| 91精品久久久久久久久| 日韩精品中文字幕久久臀| 国产精品美女在线观看| 国产精品成人免费视频| 成年人精品视频| 亚洲丁香婷深爱综合| 国产午夜精品一区二区三区| 久久久999精品| 精品激情国产视频| 亚洲欧美在线免费观看| 亚洲999一在线观看www| 欧美午夜性色大片在线观看| 亚洲欧美日韩爽爽影院| 一本色道久久88精品综合| 日韩成人在线视频| 91亚洲精品在线| 国产精品入口尤物| 最近2019中文字幕大全第二页| 国产精品成人国产乱一区| 欧美综合国产精品久久丁香| 成人写真福利网| 久久夜色撩人精品| 国内精品免费午夜毛片| 欧美整片在线观看| 久久久久国产精品免费| 丁香五六月婷婷久久激情| 精品国产一区二区在线| 成人激情av在线| 亚洲理论电影网| 18性欧美xxxⅹ性满足| 欧美午夜宅男影院在线观看| 大胆人体色综合| 性色av一区二区三区免费| 日韩高清有码在线| 成人激情在线观看| 色综合久久88| 欧美肥臀大乳一区二区免费视频| 国产欧美日韩免费看aⅴ视频| 精品亚洲一区二区三区在线播放| 91成人免费观看网站| 国产精品99久久久久久久久久久久| 欧美成人一区在线| 亚洲综合第一页| 国产精品情侣自拍| 欧美成人剧情片在线观看| 亚洲精品电影久久久| 日韩中文视频免费在线观看| 亚洲福利在线观看| 欧美日韩第一视频| 亚洲第一区中文99精品| 尤物精品国产第一福利三区| 国产精品久久久久免费a∨大胸| 亚洲国产精品成人精品| 亚洲精品丝袜日韩| 亚洲最新在线视频| 91免费的视频在线播放| 疯狂做受xxxx高潮欧美日本| 国产精品第一区| 亚洲老司机av| 欧美另类在线播放| 国产成人在线一区二区| 欧美激情视频一区| 中文字幕在线日韩| 日韩精品日韩在线观看| 欧美日韩综合视频网址| 精品自拍视频在线观看| 亚洲无限av看| 久久久精品2019中文字幕神马| 日韩欧美国产成人| 亚洲欧美精品一区二区| 国产成人精品在线播放| 日韩av最新在线观看| 国产视频精品久久久| 欧美裸体xxxx极品少妇| 91精品国产高清自在线看超| 亚洲九九九在线观看| 色狠狠久久aa北条麻妃| 国产精品jizz在线观看麻豆| 日韩在线观看免费高清完整版| 日产日韩在线亚洲欧美| 国产精品96久久久久久| 日本国产高清不卡| 久久久久久久电影一区| 欧美精品久久久久久久久久| 曰本色欧美视频在线| 自拍偷拍免费精品| www.99久久热国产日韩欧美.com| 成人在线视频福利| 亚洲人av在线影院| 26uuu另类亚洲欧美日本一| 亚洲国模精品私拍| 日韩成人在线网站| 91在线精品视频| 92国产精品久久久久首页| 日韩欧美在线观看| 欧美在线观看一区二区三区| 日本一本a高清免费不卡| 亚洲精品suv精品一区二区| 国产精品三级在线| 欧美一级bbbbb性bbbb喷潮片| 中文字幕国产亚洲2019| 日韩精品视频三区| 日韩国产欧美精品一区二区三区| 欧美日韩加勒比精品一区| 国产精品人成电影| 国产手机视频精品| 国产手机视频精品| 日韩电视剧在线观看免费网站| 国产精品国产福利国产秒拍|