因c++文件操作一直要用,所以就特此写一篇博客来记录一下c++对txt文件的读取操作。
1.c++文件流:
fstream //文件流
ifstream //输入文件流
ofstream //输出文件流
2.文件路径的表示
绝对路径:pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb");
给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\"
相对路径:对相对路径而言,路径表示中的“\”也要用双斜线"\\"
ios::out //供写,文件不存在则创建,文件存在则清空原内容(ofstream默认打开方式)
ios::ate //文件打开时,指针指在文件最后,常和in、out联合使用
ios::app //供写,文件不存在则创建,在原文件内容后写入新的内容,指针位置总在最后
ios::binary //二进制格式文件
//实现txt文件的读入并重写入另外一个txt文件中~
#include //ifstream
#include
#include //包含getline()
//#include
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
#include
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<
// 在文件后面续写数据
#include
#include
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用法
#include
#include
using namespace std;
int main()
{
string str, line;
while(getline(cin, line))
{
istringstream stream(line);
while(stream>>str)
cout<
测试:7、汽车加油问题的文件操作
一辆汽车加满油后可以行驶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
#include
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>a[i];
int sum=0; //加油次数
int k1=0; //加油后的里程数
for(int i=0;in)
{
fout<<"No Solution";
return -1;
}
for(int i=0;in)
{
sum++;
k1=a[i];
}
}
fout<n)
{
k1=a[i];
fout<
希望分享的对你们有用处,加油!