当前位置: 首页 > web >正文

代码小优化

文章目录

  • 代码优化
    • 优化代码1--详见博客错误
    • 优化代码2-cin问题
      • 刷新cin错误日志
      • `cin.get()`:
      • `cin.ignore()`:
      • 主要用法:
      • 优化后

代码优化

优化代码1–详见博客错误

char buffer[1024] = {0};               // 接收服务器返回的数据
len = recv(clientfd, buffer, 1024, 0); // 接收数据if (len < 0 || len == 0)
{if (len == 0){cout << "server quit!" << endl;return 0;}else{cerr << "recv error" << endl;}
}

优化代码2-cin问题

刷新cin错误日志

int choice;
cin >> choice;
cin.get(); // 清空输入缓冲区

加入 手速快, 按错了,输入 按成多个字符啥的, cin错误日志不刷新, 会一直循环错误了

不然输入错误, cin一直是 错误, 循环错误了

cin.get()

  • 读取一个字符cin.get() 是读取单个字符,包括空格和换行符。
  • 不会跳过空格和换行符cin.get() 会读取输入流中的所有字符,不会忽略空格、制表符和换行符(这与 cin >> 的行为不同,cin >> 会忽略空白字符)。
  • 用于读取包含空格的输入:当你想读取包括空格的字符串或者逐字符输入时,cin.get() 更合适。

cin.ignore():

用于清空输入缓冲区,避免缓冲区中残留的数据影响后续输入。

主要用法:

  1. 忽略一个字符

    cin.ignore();
    
    • 用于丢弃一个字符,通常是换行符。
  2. 忽略直到指定字符

    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
    • 读取并丢弃所有字符,直到遇到 \n(包括 \n)。
    • \n 也会被丢弃,不会留在缓冲区中。
  3. 没有指定字符(比如 \n)时:

    如果你不指定字符,cin.ignore() 会继续丢弃缓冲区中的所有字符,直到达到指定的字符数或缓冲区末尾。例如:

    cin.ignore(numeric_limits<streamsize>::max());
    

    这会忽略缓冲区中的所有字符,直到缓冲区为空。

  4. 处理无效输入(如输入非数字时)–重点

    int num;
    while (!(std::cin >> num)) {  // 如果输入的不是整数std::cin.clear();         // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  // 丢弃整行std::cout << "Invalid input. Try again: ";
    }
    

优化后

if (!(std::cin >> choice)) {  // 如果输入不是整数std::cin.clear();  // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  // 丢弃整行continue;  // 重新尝试输入
}
// cin.get(); // 读出 换行
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');  // 丢弃剩余字符, 直到遇到换行(如换行符)
http://www.xdnf.cn/news/2572.html

相关文章:

  • Babel、core-js、Loader之间的关系和作用全解析
  • 人类社会的第四阶段
  • 【C语言练习】006. 编写条件语句处理不同情况
  • Spring中生成Bean的方式总结-笔记
  • Customizing Materials Management with SAP ERP Operations
  • Spark-Streaming核心编程内容总结
  • CSS布局实战:Flexbox 与 Grid 精髓解析
  • ecovadis认证评估标准?ecovadis审核目的?
  • 网络安全厂商F5荣登2025 CRN AI 100榜单,释放AI潜力
  • Vue3 里 CSS 深度作用选择器 :deep()
  • HQChart k线图配置
  • BUUCTF——The mystery of ip
  • mac 设置飞书默认浏览器(解决系统设置默认浏览器无效)
  • Nacos简介—4.Nacos架构和原理二
  • [AHOI2001] 质数和分解
  • 蓝桥杯 16. 密文搜索
  • Zookeeper实现分布式锁实战应用
  • 启效云平台审核流应用场景及功能介绍
  • day51—二分法—x 的平方根(LeetCode-69)
  • Gin 框架中集成 runtime/debug 打印日志堆栈信息
  • 2025.4.22 JavaScript 常用事件学习笔记
  • 司法大模型构建指南
  • 问题四、如何解决模型轴配置问题
  • 高功率无人机动力方案首选:CKESC ROCK 220A-H CAN 电调工程性能实测
  • 开发一个LabVIEW软件需要多少钱
  • 2025通信会丨以创新技术赋能新型电力系统 锐捷知识大脑推动效率提升
  • rabbitmq常用命令
  • 代码随想录算法训练营Day37
  • Diamond软件的使用--(6)访问FPGA的专用SPI接口
  • 关于百度模型迭代个人见解:技术竞速下的应用价值守恒定律