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.htm

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

希望分享的对你们有用处,加油!

  • 77
    点赞
  • 314
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值