1.iostream处理控制台IO

 #include<iostream>
#include<string>
using namespace std;
istream& Test(istream &in) { //IO对象没有拷贝或者赋值,所以形参和返回值都不能设置为流类型,通常用引用来传递流对象。
string word;
while (in >> word && !in.eof()) {
cout << word << endl;
}
in.clear();
return in;
} void TestCin(istream &in) {
int a = ;
auto old_state = cin.rdstate(); //记住cin的当前状态
cin.clear(); //无参数clear,将所有条件状态复位
while (cin >> a) {}
cin.setstate(old_state); //将cin设置为原有状态 //只复位failbit和badbit位,其他不变
cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit); }
int main(void) {
cout << "a" << endl;//加入回车后立刻刷新
cout << "a" << ends;//加入空格后立刻刷新
cout << "a" << flush;//什么也不做立刻刷新 cout << unitbuf;//所以输出都立刻刷新,无缓冲
cout << "a";
cout << nounitbuf;//回到正常的刷新方式
cout << "a";
return ;
}

2.fstream处理命名文件IO

 #include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
vector<string> str;
vector<string>::iterator it;
string tmp;
void printline(string ifile) {
ofstream out; //未指定文件打开模式
string word;
out.open(ifile + ".txt", ofstream::app); //设置文件打开模式为app追加模式
while (getline(cin,word) && word != "###") //读入一行
out << word<<endl; //写入文件
out.close();//关闭文件流
}
void printone(string ifile) {
ofstream out; //未指定文件打开模式
string word;
out.open(ifile + ".txt", ofstream::app); //设置文件打开模式为app追加模式,实际上隐含了out模式,仅以out模式打开文件会丢弃原有数据
//上述效果等价于out.open(ifile+".txt),ofstream::out | ofstream::app);
while (cin >> word && word != "###") //读入一个
out << word << endl; //写入文件
out.close(); //关闭文件流
}
void readone(string ifile) {//将文件内容读入到一个string的vector容器中
str.clear();
ifstream openfile(ifile+".txt",ifstream::in); //以读模式打开一个文件
while(openfile >> tmp) { //没有到达文件的尾部
//读入一个
str.push_back(tmp); //每个元素单独存入vector中
}
if (str.empty()) { //没有数据,直接返回
cout << "No data?!" << endl;
return ;
}
it = str.begin();
for (; it != str.end(); it++) //输出文件内容(存入vector中)
cout << (*it) << endl;
openfile.close(); //关闭文件流 }
void readline(string ifile) {//将文件内容读入到一个string的vector容器中去
str.clear();
ifstream openfile(ifile + ".txt", ifstream::in); //以读模式打开一个文件
while (getline(openfile, tmp)) { //没有到达文件的尾部
//读入一行
str.push_back(tmp); //每一行作为独立元素存入vector中
}
if (str.empty()) { //没有数据,直接返回
cout << "No data?!" << endl;
return;
}
it = str.begin();
for (; it != str.end(); it++) //输出文件内容(存入vector中)
cout << (*it) << endl;
openfile.close(); //关闭文件流
}
int main(void) {
printone("");
readone("");
printline("");
readline("");
return ;
}
  • 读入过程
  • 文件写入后的txt

3.stringstream完成内存string的IO

 #include<iostream>
#include<sstream>
#include<string>
#include<vector>
using namespace std; int main(void) {
ostringstream os;
os << "dad";
string as = os.str();
string bs = "";
os << bs;
cout << as << endl;
as= os.str();
cout << as << endl; //如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长
ostringstream temp("");
cout << temp.str() << endl;
temp << "dsadas"; //修改原有数据后追加字符串
string t1 = temp.str();
cout << t1 << endl; os.clear();//如果需要使用同一个流,每次使用之前都需要clear一下
int a = ;
stringstream ans;//int转字符串
string b;
ans << a;
ans >> b;
cout << b << endl;
return ;
}

4.总结

类fstream和stringstream都是继承类iostream的,输入继承istream,输出继承ostream,所以能都使用istream的地方都可以使用ifstream和istringstream,对ostream同理。

IO流C++的更多相关文章

  1. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

  2. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  3. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  4. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. IO流总结

    IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类:  按照操作数据的类型分为两种: 字节流和字符流.  按 ...

  6. IO流

    流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...

  7. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  9. java IO流 之 其他流

    一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一).   public class ByteArrayInputStream extends ...

  10. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

随机推荐

  1. CAD增强属性块的还原(转)

    来自:http://blog.3snews.net/space.php?uid=13924959&do=blog&id=70174 作者:毛毛虫 Demo下载:CAD增强属性块的还原 ...

  2. MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    原文:http://download.csdn.net/download/jobfind/9559162 MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档).rar

  3. 【转】怎么用PHP发送HTTP请求(POST请求、GET请求)?

    file_get_contents版本: /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * ...

  4. IEC62304软件维护框架

    软件维护计划的任务 建立接收.记录.评估.解决和追踪医疗器械软件发行后的反馈 制定确认反馈是否是问题的标准 使用风险管理过程 使用配置管理过程 制定升级.补丁以及遗留问题修正计划 问题和修改分析的任务 ...

  5. 常用sql commands以及mysql问题解决日志

    mysql workbench常用命令快捷键 ctrl+T ->创建新的sql query tab ctrl+shift+enter->执行当前的sql命令 https://dev.mys ...

  6. ML机器学习导论学习笔记

    机器学习的定义: 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以 ...

  7. Java实例---flappy-bird实例解析

    第一天: 实现背景图片和小鸟的动态飞行效果 package com.ftl.flappybird.day2; import java.awt.Color;//颜色 Color.class import ...

  8. Bootstrap 4/3 页面基础模板 与 兼容旧版本浏览器

    Bootstrap 3 与 4 差别很大,目录文件结构.所引入的内容也不同,这里说说一下 Bootstrap 引入的文件.网页模板和兼容性问题.本网站刚刚搭建好,正好发一下文章原来测试网站. Boot ...

  9. 连续支付的年金 (continuously payable annuity)

    一.含义 假设连续不断地付款,但每年的付款总量仍然为1元. 二. 连续支付年金是年支付次数m趋于无穷大时的年金,故 连续支付年金与基本年金的关系: 连续支付,每年的支付总量为1,支付期限为无穷: 积累 ...

  10. Azure 负载均衡器的多个 VIP

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. Azure 负载均衡器 ...