C++I/O小结

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.eofbitcin.failbit 设置为1,此时 cin 将关闭读取的功能,直至人为调用 cin.clear() 为止。

而我们可以通过 cin.eof() 或者 cin.fail() 访问 cin.eofbitcin.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> 用于对文件进行输入输出,使用步骤如下:

  1. 包含头文件 fstream
  2. ofstream 操作符或 ifstream 创建一个对象。
  3. 就像使用 coutcin 那样使用创建的对象。
  4. 使用结束后,调用对象的 close() 成员函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浅谈C++常用输入输出 在编写C++程序的时候,经常因为输入输出头疼,所以在这里做一个小结,记录一下常用的输入输出...
    MinoyJet阅读 9,147评论 0 6
  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 5,683评论 0 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,153评论 1 51
  • 《六项精进》打卡第三十天 日期:2017.10.24 姓名:黄晓明 单位:温州市博奕成套设备工程有限公司 组别:...
    黄晓明_f18e阅读 1,238评论 0 0
  • CoreData概述: Core data 是数据持久存储的最佳方式Core Data 基于MVC模式下,为创建分...
    Icanbe阅读 3,770评论 0 1

友情链接更多精彩内容