四下皆是 2023-09-12 09:20 采纳率: 75%
浏览 11
已结题

第二个cin为啥不读入前一个cin留下的回车

img


cin他不是不会读取回车吗?,然后他会到回车然后直接读取,那留在缓冲区的回车为啥不会影响第二个cin,然后getline会读取回车?

  • 写回答

2条回答 默认 最新

  • 呈两面包夹芝士 2023-09-12 09:29
    关注

    关于你的问题,我需要解释一些关于C++的cingetline函数的行为。

    首先,cin是C++的一个输入流对象,它可以从标准输入(通常是键盘)读取数据。当你使用cin读取数据时,它会跳过空格、制表符和换行符,直到找到下一个非空格字符。这就是为什么cin不会读取回车符的原因。

    然而,当你输入数据并按下回车后,回车符('\n')会被留在输入缓冲区中。如果接下来的输入操作不是立即开始,这个回车符可能会影响接下来的输入。

    另一方面,getline函数是专门设计来读取整行输入的,包括空格和制表符,直到遇到换行符(回车符)。因此,当你使用getline时,它会读取并处理留在缓冲区中的回车符。

    举个例子:

    #include <iostream>
    #include <string>
    
    int main() {
        int a;
        std::string b;
        
        std::cout << "Enter a number: ";
        std::cin >> a;
        
        std::cout << "Enter a line: ";
        std::getline(std::cin, b);
        
        std::cout << "You entered: " << a << "\n" << b << std::endl;
        return 0;
    }
    

    在这个示例中,当你输入一个数字并按下回车后,回车符会留在缓冲区中。然后,当你使用getline读取字符串时,它会读取并处理留在缓冲区中的回车符,因此不会影响接下来的输入。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月12日

悬赏问题

  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?