zoukankan      html  css  js  c++  java
  • c++ cin.clear()

    简介
    cin.clear() 表示使流重新处于有效状态,一般情况它与 cin.sync() 配合使用,使用顺序如下:

    cin.clear(); //使流重新处于有效状态
    cin.sync(); //清除缓存区的数据流
    cin.sync() 表示清除缓存区的数据流。必须 cin.clear() 在前,cin.sync() 在后。因为在流中 fail() 状态值无效的情况下,执行cin.sync() 清空流是无效的,输入流中的数据依旧在(从错误开始那个,包括错误那个字符仍然在流中)。

    实例

    #include <iostream>
    #include <string>
    #include <deque>
    using namespace std;
    
    int main() {
    deque<string> lists;
    string str;
    
    cout << "输入list数据(Ctrl + Z 结束):" << endl;
    while (cin >> str)
    {
    lists.push_back(str);
    }
    
    cin.clear();    //使流重新处于有效状态
    cin.sync();    //清空数据(只使用 cin.clear() 也可达到效果)
    
    cout << "读入要寻找的值:" << endl;
    cin >> str;
    
    for (deque<string>::iterator iter = lists.begin();
    iter != lists.end(); ++iter)
    {
    if (*iter == str)
    {
    //删除此值
    iter = lists.erase(iter);
    --iter;
    }
    }
    
    cout << "输出处理后的数据:" << endl;
    for (deque<string>::iterator iter = lists.begin();
    iter != lists.end(); ++iter)
    {
    cout << *iter << "	";
    }
    
    
    system("pause");
    return 0;
    }


    输入输出结果如下:

     

    此为正常运行结果。

    如果不使用 cin.clear() ,则会在“读入要寻找的值”时,直接跳过,默认读入的 str 为上面最后一次读入的数据,即数值5。这是错误的方式。

    #include <iostream>
    #include <string>
    #include <deque>
    using namespace std;
    
    int main() {
    deque<string> lists;
    string str;
    
    cout << "输入list数据(Ctrl + Z 结束):" << endl;
    while (cin >> str)
    {
    lists.push_back(str);
    }
    
    //    cin.clear();    //使流重新处于有效状态
    //    cin.sync();    //清空数据(只使用 cin.clear() 也可达到效果)
    
    cout << "读入要寻找的值:" << endl;
    cin >> str;
    
    for (deque<string>::iterator iter = lists.begin();
    iter != lists.end(); ++iter)
    {
    if (*iter == str)
    {
    //删除此值
    iter = lists.erase(iter);
    --iter;
    }
    }
    
    cout << "输出处理后的数据:" << endl;
    for (deque<string>::iterator iter = lists.begin();
    iter != lists.end(); ++iter)
    {
    cout << *iter << "	";
    }
    
    
    system("pause");
    return 0;
    }


    运行结果:

     

    转载自:https://blog.csdn.net/qq_27278957/article/details/89892853

    也可参考:https://www.cnblogs.com/tonglingliangyong/p/3908463.html



  • 相关阅读:
    flutter添加启动图及设置启动时间
    flutter中通过循环渲染组件
    flutter学习资料汇总
    flutter中显现登录页面成功后跳转的方法
    flutter 常用视图组件
    mpvue学习笔记
    按钮放大动画效果
    一位练习时长两年半的内网渗透练习生
    Kali系统中20个超好用黑客渗透工具,你知道几个?
    渗透测试之三内网跳板
  • 原文地址:https://www.cnblogs.com/li-lou/p/12334961.html
Copyright © 2011-2022 走看看