C++I/O小结
2016-11-03 本文已影响0人
傻沙
Tags:C++,《C++ Primer Plus》笔记
一、iostream##
头文件 <iostream>
用于对控制台进行输入输出。通常来讲,对 iostream
的疑惑一般在于 cin
上,这里总结 cin
的用法。
cin >> name###
一般地,我们通过 cin >> <name>
来将一段输入流复制到名为 name
的变量中,当然 name
变量必须已经提前声明。
首先, cin
输入的数据一开始都是字符类型,也就是 char
。但是, cin
的后续行为将视 name
的类型而定。
- 如果是
char
类型,则cin
读取遇到的第一个字符,输入到name
中。
cin
只管往后读取,因为输入流默认就是字符流,所以读取到一个字符就会结束。例如输入3.22
,前面的空格会被自动跳过,读到3
时取到一个字符,读取结束,.22
会被留在输入流中,参与下一次读取。
- 如果是
int
类型,则cin
读取从第一个数字字符开始,到第一个非数字字符的中间部分,输入到name
中。
同char
一样,第一个数字字符前面的内容跳过。例如输入13.22
,读取得到13
。
- 如果是
double
类型,则在int
规则的基础上,不跳过.
即可。
- 如果是
char[]
类型,则会将输入流一直读入,直到遇见空白字符(空格符、换行符等)。
</br>
cin.get(name)###
读取下一个字符到name中,注意三点:
-
name
必须是char
类型变量,没有例外。 - 不会跳过空字符。
- 不指定
name
时,即cin.get()
时,跳过输出流中的下一个字符。
</br>
cin.get(name,Artsize),cin.getline(name,Artsize)###
两者都可以读取在同一行、长度为 Artsize
的一连串字符或整行字符,区别在于:
前者会在输出流里留下一个换行符,而后者则连换行符一起读取。
</br>
对于上述的几种 cin
用法,都只有在用户按了回车键后,输入流才会被读取。在很多编译器里,这个回车也算一个换行符!。
</br>
cin文件尾条件###
逐个字符读取时,通常我们需要判断输入流是否已到结尾。
若 cin.get()
在读取下一个字符时发现没有输入,则会返回 EOF
,并将 cin.eofbit
和 cin.failbit
设置为1,此时 cin
将关闭读取的功能,直至人为调用 cin.clear()
为止。
而我们可以通过 cin.eof()
或者 cin.fail()
访问 cin.eofbit
或 cin.failbit
,若已被标记,则函数返回 true
。
下述代码将计算输入的字符数。
int ch;
while ((ch = cin.get()) != EOF){
cout.put(char(ch));
++count;
}
</br>
cin检错经典代码###
if(!cin){
cin.clear();
while(cin.get() != '\n') continue;
cout << "Bad input;input process terminated.\n";
break;
}
</br>
二、fstream##
头文件 <fstream>
用于对文件进行输入输出,使用步骤如下:
- 包含头文件
fstream
。- 用
ofstream
操作符或ifstream
创建一个对象。- 就像使用
cout
和cin
那样使用创建的对象。- 使用结束后,调用对象的
close()
成员函数。