为什么在使用getline之后cin无法获得缓冲区数据?

问题描述

此代码:

regex

如果我输入的是“ 1234”

#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>

using namespace std;

#define p(a) cout << "|" << a << "|" << endl
int main() {
    
    char a[100];
    char b[100];

    cin.getline(a,4,'\n');

    cin >> b;

    p(a);
    p(b);
    
    return 0;
}

我有下一个输出:

1234

但是我知道使用getline可以得到三个元素:|123| || ,它将发送到"123"变量,最后添加a字符。同样,其余字符\0留在缓冲区中。那么为什么在下一个"4\n"中没有将其复制到"cin>>"变量中呢?为什么bb

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)