zoukankan      html  css  js  c++  java
  • 关于cin.ignore()函数的一个需要注意的地方

    刚写小一段代码,input,isearch均是int类型,ivec是vector<int>类型

    1   cout << "Enter integers:";
    2 while (cin >> input)
    3 ivec.push_back(input);
    4
    5 cin.clear();
    6 cin.ignore(1024);
    7
    8 cout << "Which number do you want to search:";
    9 cin >> isearch;

    在运行中

    输入:若干整数 回车 Ctrl-Z 回车

    奇怪,没有跳出第8行代码,然后尝试不断的输入回车,依然没有运行到第8行,无奈再次放大招Ctrl-Z,没有回车,直接就跳出了“Which number do you want to search:2281472 appears 0 times.”

    (请无视“appears 0 times”)跳出来后程序直接退出了,也就是第9行的cin没有执行

    这里的2281472难道是Ctrl-Z的int值?不懂...

    当时就觉得奇怪呀,这是怎么回事,运行不到后面的cin(也就是第9行)

     

    后来将cin.ignore(1024)修改为cin.ignore(3)后再次编译运行

    输入:若干整数 回车 Ctrl-Z 回车 回车 回车 回车

    正常跳出了第8行代码,输入了 23 回车程序正常退出

     

    因此得出个结论:

    当调用cin.ignore(10)时候,那么如果在缓冲区中字符数不足10的时候,你的程序将暂停,直到你输入到缓冲区的字符数达到了10,这条语句才运行结束,之后的语句才能运行。

  • 相关阅读:
    MySQL笔记(6)---锁
    MySQL笔记(5)---索引与算法
    MySQL笔记(4)---表
    MySQL笔记(3)---文件
    MySQL笔记(2)---InnoDB存储引擎
    MySQL笔记(1)---MySQL体系结构和存储引擎
    生成器,迭代器,装饰器
    文件操作、def函数、模块导入、json
    数据类型、字符串操作
    基本数据类型,条件判断
  • 原文地址:https://www.cnblogs.com/wnarutou/p/2404719.html
Copyright © 2011-2022 走看看