C++文件读取与写入

头文件

fstream  // 文件流
ifstream  // 输入文件流
ofstream  // 输出文件流

文件打开方式

ios::app:以追加的方式打开文件
ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:以二进制方式打开文件,缺省的方式是文本方式
ios::in:文件以输入方式打开(文件数据输入到内存)
ios::out:文件以输出方式打开(内存数据输出到文件)
ios::nocreate:不建立文件,所以文件不存在时打开失败
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:如果文件存在,把文件长度设为0

文件写入(不追加,覆盖原文件)

    //1、创建流对象
	fstream fs; //可输入输出
	//2、指定打开方式
	fs.open("test_A.txt", ios::out);
	//3、文件写入
	fs<<"abc"<<123;
	fs.close();

2、文件写入(追加,在原文件末尾写入)

    //1、创建流对象
	fstream fs; //可输入输出
	//2、指定打开方式
	fs.open("test_A.txt", ios::out|ios::app);
	//3、文件写入
	fs<<"abc"<<123;
	fs.close();

3、文件读取

    //1、创建流对象
	fstream fs; //可输入输出
	//2、指定打开方式
	fs.open("test_A.txt", ios::in);
	//3、文件读取(前面是字符串,后面是数字)
	String s; 
	int num;
	while(fs>>s>>num) //文件读取至末尾
	{
	    cout<<s<<"  "<<num<<endl;
	}
	fs.close();

4、文件读取(按行读取)

    //1、创建流对象
	fstream fs; //可输入输出
	//2、指定打开方式
	fs.open("test_A.txt", ios::in);
	//3、文件读取(前面是字符串,后面是数字)
	String line;
	while(getline(fs, line)) //文件读取一行,并按分隔符进行处理
	{
	    //"123,456,789"
	    int i1 = line.find(",");
		int i2 = line.find(",",len1+1);
		String s1 = line.substr(0,i1);
		String s2 = line.substr(i1+1,i2-i1-1);
		String s3 = line.substr(i2+1);
		//字符串转数字
		double d1 = my_atod(s1);
		double d2 = my_atod(s2);
		double d3 = my_atod(s3);
		cout<<d1<<"  "<<d2<<"  "<<d3<<endl;
	}
	fs.close();

    //包含头文件 #include<sstream>
	double my_atod(string tempString)
	{
	    double result;
	    stringstream ss;
	    ss << tempString;
	    ss >> result;
	    return result;
	}
  • 17
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
读取写入文件可以通过fstream库中的ifstream和ofstream来实现。具体步骤如下: 1. 打开文件并创建文件流对象 ```c++ ifstream inFile; inFile.open("input.txt"); // 打开输入文件流 ofstream outFile; outFile.open("output.txt"); // 打开输出文件流 ``` 2. 读取文件内容或写入内容 ```c++ // 读取文件内容 int x; inFile >> x; // 写入内容 outFile << "Hello World!"; ``` 3. 关闭文件流对象 ```c++ inFile.close(); outFile.close(); ``` 链表是一种常用的数据结构,可以通过指针来实现。一般包括一个节点结构体和一个链表结构体,具体实现如下: ```c++ struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {} }; class LinkedList { public: LinkedList(); ~LinkedList(); void addNode(int val); void deleteNode(int val); void printList(); private: ListNode* head; }; ``` 其中,addNode函数用于向链表中添加节点,deleteNode函数用于删除链表中的节点,printList函数用于打印链表中的所有节点。具体实现可以参考下面的代码: ```c++ LinkedList::LinkedList() { head = new ListNode(-1); } LinkedList::~LinkedList() { ListNode* cur = head; while (cur != NULL) { ListNode* tmp = cur; cur = cur->next; delete tmp; } } void LinkedList::addNode(int val) { ListNode* cur = head; while (cur->next != NULL) { cur = cur->next; } cur->next = new ListNode(val); } void LinkedList::deleteNode(int val) { ListNode* cur = head; while (cur->next != NULL) { if (cur->next->val == val) { ListNode* tmp = cur->next; cur->next = cur->next->next; delete tmp; return; } cur = cur->next; } } void LinkedList::printList() { ListNode* cur = head->next; while (cur != NULL) { cout << cur->val << " "; cur = cur->next; } } ``` 以上就是关于c++文件读取写入以及链表的实现方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值