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,这条语句才运行结束,之后的语句才能运行。

  • 相关阅读:
    ZOJ 1217 eight
    COJ 1080 A simple maze
    八数码(双向广搜)
    HDOJ 1043 eight
    [HDOJ] 小兔的棋盘
    ZOJ 2110 Tempter of the Bone
    POJ 2406 Power Strings
    [HDOJ] goagain的超级数列
    COJ 1216 异或最大值
    八数码(IDA*)
  • 原文地址:https://www.cnblogs.com/wnarutou/p/2404719.html
Copyright © 2011-2022 走看看