c++對txt檔案讀取操作+例項程式碼
因c++檔案操作一直要用,所以就特此寫一篇部落格來記錄一下c++對txt檔案的讀取操作。
1.c++檔案流:
fstream //檔案流
ifstream //輸入檔案流
ofstream //輸出檔案流
2.檔案路徑的表示
檔案路徑的表示可以分為絕對路徑和相對路徑。
絕對路徑:pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb");
給出了從碟符開始的全部路徑,這裡需要注意的是“\”要用雙斜線"\\"
相對路徑:對相對路徑而言,路徑表示中的“\”也要用雙斜線"\\"
windows下表示相對路徑的規則為:
1、.\ 或 ./ 表示當前目錄,或同級目錄; 2、..\ 或 ../ 表示父目錄,或上級目錄。
3、檔案開啟方式選項:ios::in //供讀,檔案不存在則建立(ifstream預設的開啟方式)ios::out //供寫,檔案不存在則建立,檔案存在則清空原內容(ofstream預設開啟方式)
ios::ate //檔案開啟時,指標指在檔案最後,常和in、out聯合使用
ios::app //供寫,檔案不存在則建立,在原檔案內容後寫入新的內容,指標位置總在最後
ios::binary //二進位制格式檔案
3、對txt檔案的顯示和複製(顯示in.txt檔案內容並將in.txt的內容複製到out.txt檔案中)//實現txt檔案的讀入並重寫入另外一個txt檔案中~ #include<fstream> //ifstream #include<iostream> #include<string> //包含getline() //#include<cmath> using namespace std; int main(){ string s; ofstream outf; ifstream inf; inf.open("d://in.txt"); //特別注意,這裡是:// 是雙斜槓喔~~ //開啟輸出檔案 outf.open("d://out.txt"); while (getline(inf, s)) //getline(inf,s)是逐行讀取inf中的檔案資訊 { outf << s << '\n'; cout << s << endl; } inf.close(); outf.close(); return 0; }
4、基本的從txt檔案中讀入資料和顯示資料
//為能夠正確讀出寫入檔案的各資料,各資料間最好要有分隔 #include<iostream> #include<fstream> using namespace std; int main() { fstream f("d:\\out.txt",ios::out); f<<1234<<' '<<3.14<<'A'<<"How are you"; //寫入資料 f.close(); f.open("d:\\out.txt",ios::in); int i; double d; char c; char s[20]; f>>i>>d>>c; //讀取資料 f.getline(s,20); cout<<i<<endl; //顯示各資料 cout<<d<<endl; cout<<c<<endl; cout<<s<<endl; f.close(); return 0; }
// 在檔案後面續寫資料
#include <iostream>
#include<fstream>
using namespace std;
int main () {
ofstream examplefile ("example.txt",ios::app);
if(examplefile.is_open()) {
examplefile<<"This is a line.\n";
examplefile<<"This is another line.\n";
examplefile.close();
}
return 0;
}
5、istringstream用法istringstream物件可以繫結一行字串,然後以空格為分隔符把該行分隔開來。
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string str, line;
while(getline(cin, line))
{
istringstream stream(line);
while(stream>>str)
cout<<str.c_str()<<endl;
}
return 0;
}
測試:input:
abc df e efgeg ffg
ouput:
abc
df
e
efgeg
ffg
getline函式詳情見連結點選開啟連結6、用vctor儲存讀取的資料可以看看這個網址,百度一下也行https://wenwen.sogou.com/z/q809722253.htm7、汽車加油問題的檔案操作
一輛汽車加滿油後可以行駛n千米。旅途中有k個加油站。若要使沿途的加油次數最少,設計一個有效的演算法,指出應在那些加油站停靠加油。
資料輸入:由檔案input.txt 給出輸入資料。第一行有2個正整數n和k,表示汽車加滿油後可行駛nkm,且旅途中有k個加油站。接下來1行中,有k+1個整數,表示第k個加油站與第k-1個加油站之間的距離。第0個加油站表示出發地,汽車已加滿油。第k+1個加油站表示目的地。
結果輸出:將程式設計計算出的最少加油次數輸出到檔案ouput.txt。如果無法到達目的地,則輸出“No Solution”。
輸入檔案示例 輸出檔案示例
Input.txt output.txt
7 7 4
1 2 3 4 5 1 6 6
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream fin("input.txt",ios::in);
ofstream fout("output.txt");
int a[100]; //距離
int n,k;
fin>>n>>k;
for(int i=0;i<k+1;i++)
fin>>a[i];
int sum=0; //加油次數
int k1=0; //加油後的里程數
for(int i=0;i<k+1;i++)
if(a[i]>n)
{
fout<<"No Solution";
return -1;
}
for(int i=0;i<k+1;i++)
{
k1+=a[i];
if(k1>n)
{
sum++;
k1=a[i];
}
}
fout<<sum<<endl<<"停靠的加油站:";
k1=0;
for(int i=0;i<k+1;i++)
{
k1+=a[i];
if(k1>n)
{
k1=a[i];
fout<<i<<' ';
}
}
fout<<endl;
fout.close();
fin.close();
return 0;
}
希望分享的對你們有用處,加油!