C++编程思想:文件 字符串 输入输出

标准文件读取和写入

#include <iostream>
#include <fstream>
#include <string>
#include<assert.h>
using std::ifstream;
using std::ofstream;
using std::cout;
using std::endl;
using std::string;

// ******************** 利用getLine 读取和写入文件*************************
int main()
{
	const int sz = 100;
	int i = 1;
	char buf[sz];
	{
		ifstream in("txt.txt",std::ios::in); //read
		ofstream out("txt2.txt",std::ios::out|std::ios::app); //write ,打开模式为可写文件,追加模式,默认为截断模式,就是清空重写

		
	    //*********使用成员函数读取文件内容
		while (in.getline(buf,sz))//当遇到\n的时候停止,也可以默认不写第三个参数,就是\n
		{
			in.get();//吧\n取出来,并丢掉
			//cout << buf << endl;
			//out << buf << endl; //写入到txt2
		}

		in.clear();//清空函数的标志位 没有这个标志位清楚,下面的输入流指针重定位无效

		in.seekg(0, std::ios::beg);//输入流指针重定位
		
		//*************使用全局函数读取文件
		string str;
		while (std::getline(in, str))
		{
			cout << str << endl;
		}

	}
}

字符串输入输出

//********************输入输出字符串流测试*************************

int main()
{
	//输入字符串流
	istringstream s("47 1.414 this is a test"); //如果把47变成4.7 i 就会等于4 f 等于0.7
	int i;
	double f;
	string c;
	s >> i;
	s >> f;

	s >> c;

	cout << i<<endl;
	cout << f << endl;
	cout << c << endl;
	cout << s.rdbuf() << endl;

	//输出字符串流
	cout << "type an int ,a float and a string";
	cin >> i;
	cin >> f;
	cin >> std::ws; //输入一个空格符
	string strBuff;
	std::getline(cin, strBuff);
	ostringstream os;
	os << "interger = " << i << endl;
	os << "float = " << f << endl;
	os << "string = " << strBuff << endl;
	string result = os.str();
	cout << "result : " << result << endl;

}

输入输出流的格式化

//********************* 输入输出流的格式化 ***********************
int main()
{
	ofstream  out("out.txt");
	out.setf(std::ios::unitbuf); //一个标志位,每次out中加入数据,都会刷新流将文件写到 out中,所以即使abort了,文件还是会被写入
	out.setf(std::ios::showpos); //符号标志位,遇到数字显示+号
	out.unsetf(std::ios::showpos); //取消显示+号 
	out << " one " ;
	out << " two " ;
	out << 3 ;
	//abort();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bruce Eckel 《Thinking in Java》(Java编程思想)作者。Eckel有20年专业编程经验,并自1986年起教育人们如何撰写面向对象程序,足迹遍及全球,成为一位知名的 C++教师和顾问,如今兼涉Java。他是C++标准委员会拥有表决权的成员之一,曾经写过另五本面向对象编程书籍,发表过150篇以上的文章,是多本计算机杂志的专栏作家。Eckel开创Software Development Conference的C++、Java、Python等多项研讨活动。拥有应用物理学学士和计算机工程学硕士学位。 目录 译者序 前言 第1章 对象导言 第2章 对象的创建与使用 第3章 C++中的C 第4章 数据抽象 第5章 隐藏实现 第6章 初始化与清除 第7章 函数重载与默认参数 第8章 常量 第9章 内联函数 第10章 名字控制 第11章 引用和拷贝构造函数 第12章 运算符重载 第13章 动态对象创建 第14章 继承和组合 第15章 多态性和虚函数 第16章 模板介绍 附录A 编码风格 附录B 编程准则 附录C 推荐读物 索引 第2卷:实用编程技术 出版者的话 专家指导委员会 译者序 前言 第一部分 建立稳定的系统 第1章 异常处理 第2章 防御性编程 第二部分 标准C++库 第3章 深入理解字符串 第4章 输入输出流 第5章 深入理解模板 第6章 通用算法 第7章 通用容器 第三部分 专题 第8章 运行时类型识别 第9章 多重继承 第10章 设计模式 第11章 并发 附录 附录A 推荐读物 附录B 其他 索引 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值