尝试检查cin.get()是否在流中保留行尾字符

时间:2019-07-12 15:43:11

标签: c++11

1.i正在尝试检查cin.get()是否在流中保留了结束行字符,并考虑将其用于下一次输入。 我已经在代码块中尝试了此代码,但无法为下一个字符串提供输入,我正在附加我尝试过的代码并输出了。任何人都可以解释一下。

#include<iostream>

using namespace std;

int main()
{
    char s1[10];
    char s2[10];

    cout << "enter the first string: ";
    cin.get(s1, 10);

    cout << "enter the second string: ";
    cin.getline(s2, 10);

    cout << s1 << " " << s2;

    return 0;
}

输入第一个字符串:hello

输入第二个字符串:hello

请解释输出内容

2 个答案:

答案 0 :(得分:0)

This get function reference说您的超载是

  

get(s, count, widen('\n'))

该函数的重载读取到(除其他外)

  

下一个可用的输入字符c等于delim,由Traits::eq(c, delim)确定。此字符未提取(不同于basic_istream::getline())

[重点突出]

因此,换行符留在输入缓冲区中,以供getline调用读取为“空”行。

如果您想阅读行,我建议您使用std::stringstd::getline(它们确实会读取并丢弃换行符)。

答案 1 :(得分:-1)

cin.get()默认情况下捕获换行符。它将不会在流中保留换行符。