【C++ Primer】Part2·Day1 第八章 笔记及练习作答

学学学,不断地学。

一些IO库类型和头文件

头文件类型

iostream
istream 从流中读取数据
ostream 向流写入数据
iostream 读写流
文件
fstream
ifstream 从文件中读取数据
ofstream 向文件写入数据
fstream 读写文件
string
sstream
istringstream 从string中读取数据
ostringstream 向string写入数据
stringstream 读写string

  wchat_t 类型的数据,即宽字符。宽字符版本的类型和函数的名字以一个 w 开始(wcin、wcout、wcerr等),这个版本与其对应的普通版本的类型定义在同一个头文件(istream 和 wistream)。

  通过继承机制,标准库使我们忽略不同类型的流之间的差异。即标准库流(<<、>>)的特性可以无差别地应用于普通流、文件流和 string 流,以及 char 或 宽字符流版本。

输出缓冲区

  操纵符 endl(换行后刷新)、flush(刷新)、ends(出入空字符后刷新)、unitbuf(对 cerr 设置)
  
  当输入流和输出流关联在一起时,任何试图从输入流读取数据的操作都会先刷新关联的输出流。

文件输入输出

IO类型 文件流名作用
fstream fstrm创建一个未绑定的文件流
fstream fstrm(s)创建一个文件流 fstream,并打开名为 s 的文件
fstream fstrm(s, mode)创建一个文件流 fstream,并以指定 mode 打开名为 s 的文件
fstrm.open(s)打开名为 s 的文件,并与 fstrim 绑定,返回 void
fstrm.close()关闭与 fstrm 绑定的文件,返回 void
fstrm.is_open(s)判断与 fstrm 关联的文件是否打开,返回 bool

PS : s 可以是 string 类型,或者是一个指向C风格字符串的指针。

string

  对整行文本进行处理时,通过 istringstream 处理行内的单个单词。


-------------------------------------------------------------- \ 我 是 分 割 线 / --------------------------------------------------------------

小昭 の 练习作答

8.1

#include<iostream>
#include<string>
std::istream& sadas(std::istream& in){
	in.clear();
	string str;
	while(in >> str) std::cout << str << endl;
	in.clear();
	return in;
}
int main(){
	sadas(std::cin);
	return 0;
}

8.2 略
8.3 输入的字符为 结束标识 时,如 ctrl + z。
8.4~8.5

ifstream in(ifile);
vector<string> vec;
if(in){
	for(auto s;getline(in,s);) vec.push_back(s);
}

ifstream in(ifile);
vector<string> vec;
if(in){
	for(auto s;in >> s;) vec.push_back(s);
}

8.6~8.8 书店程序略
8.9

int main{
	string str;
	getline(cin, str);
	istringstream lalala(str);
	sadas(lalala);
	return 0;
}

8.10

ifstream read(ifile);
vector<string> vec;
if(read){
	for(auto s;getline(in,s);) vec.push_back(s);
}
for(auto &v : vec){
	string word
	istringstream lala(v);
	while(lalala >> word) cout << word;
}

8.11 略
8.12 不会。
8.13

摸了

8.14 避免 复制向量中的每个对象 和 意外更改向量中元素的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值