1. 程式人生 > >關於字符串和文件流的奇技淫巧

關於字符串和文件流的奇技淫巧

童鞋 err pen spa 關於 文件大小 ood c_str 64bit

早早起來,發一篇來概括一下昨天晚上搞到深夜才學到的一些字符串和文件流的簡單操作。

(寫在前面:以下所有的文件流都以輸入文件流為例,另外這種文件讀寫方式與競賽時使用的有較大差別,NOIP黨裏C++剛剛入門的童鞋請謹慎閱讀)

文件流的定義

#include <fstream>
#include <iostream>
using namespace std;
ifstream in//定義一個叫做in的ifstream類對象

ifstream類的文件打開方法(使用open成員函數(函數原型:

void open(const char*_Filename,unsigned int_mode)

代碼片段

//ifstream in;
//string name;
cin>>name;//讀入要打開的文件名
in1.open(name1.c_str());//將文件名轉成C語言字符串風格並用open成員函數打開對應文件
if (!in1.good())//成員函數good判斷當前文件是否正常打開
{
    cout << "Error On Opening FILE1..." << endl;
    return 0;
}

計算文件大小(seekg,tellg成員函數)

in.seekg(0, ios::end);//移動光標到文件末尾
streampos pos = in
.tellg();//返回當前光標位置 cout << "The Size of FILE is" << pos << endl;//輸出文件大小 in.seekg(0, ios::beg);//再將光標復位

以字符串(STL string)形式讀入文件全部內容

string tmp((istreambuf_iterator<char>(in1)),istreambuf_iterator<char>());//將文件內容當作字符串讀入
cout << tmp << endl;

備註:以上代碼都在本機Visual Studio2017上測試通過,操作系統Windows10 64Bit。

這是昨天晚上在搜集各方資料和一次次失敗嘗試後的結果,現總結一下並與大家分享(寫博防忘大法好...)

關於字符串和文件流的奇技淫巧