计算' cin.getline() '是否成功

Figuring out whether `cin.getline()` succeeds

本文关键字:是否 成功 cin 计算 getline      更新时间:2023-10-16

基本代码片段:

while (true)
{
  cin.getline(str, STRSIZE);
  if (str[0] == 'n') { break; }
}

本质上,当用户只输入一个返回键时,循环假定结束。当然,这段代码不起作用,因为n被刷新了,并且永远不会在str中结束,以验证是否输入了单独的n。我并不好奇为什么这不起作用;我知道为什么。

如何验证进入了一个单独的n,从而退出了while-loop ?


我知道可以这样做:

while (cin >> str);
然而:

  • >>一次只取一个字
  • 在我的实际代码中,使用for-loop,而不是while-loop

如果cin.getline()读取一行失败,则cin将处于错误状态。

你可以使用:

while (cin.getline(str, STRSIZE))
{
   if ( str[0] == '' ) { break; }
   // Use str
}