C++ 正在计算'cin.getline()'是否成功
以下是基本代码片段:C++ 正在计算'cin.getline()'是否成功,c++,validation,file-io,cin,getline,C++,Validation,File Io,Cin,Getline,以下是基本代码片段: while (true) { cin.getline(str, STRSIZE); if (str[0] == '\n') { break; } } 本质上,当用户只输入一个单独的返回键时,循环应该结束。 当然,此代码不起作用,因为\n会被刷新,并且不会在str中结束,以验证是否输入了单独的\n。我不奇怪为什么这不起作用;我知道为什么 如何验证是否输入了一个单独的\n,从而退出while循环? 我知道一个人可以做到以下几点: while (cin >>
while (true)
{
cin.getline(str, STRSIZE);
if (str[0] == '\n') { break; }
}
本质上,当用户只输入一个单独的返回键时,循环应该结束。
当然,此代码不起作用,因为\n
会被刷新,并且不会在str
中结束,以验证是否输入了单独的\n
。我不奇怪为什么这不起作用;我知道为什么
如何验证是否输入了一个单独的\n
,从而退出while循环?
我知道一个人可以做到以下几点:
while (cin >> str);
然而:
一次只接受一个单词>
- 在我的实际代码中,使用了
,而不是for循环
while循环
cin.getline()
无法读取一行,cin
将处于错误状态
您可以使用:
while (cin.getline(str, STRSIZE))
{
if ( str[0] == '\0' ) { break; }
// Use str
}
如果cin.getline()
读取一行失败,cin
将处于错误状态
您可以使用:
while (cin.getline(str, STRSIZE))
{
if ( str[0] == '\0' ) { break; }
// Use str
}
哦,所以当我调用
cin.getline()
时,str
将设置为\0
,而不是调用之前的str
垃圾?@SirJony,这是正确的str
将设置为空字符串,而不是\0
。有什么区别?顺便说一下,我使用的是char[]
,而不是string
。很抱歉没有说清楚。@SirJony,\0
可以是char
的值,而不是字符串。它可以是str[0]
的值,但不能是str
的值。细微但重要的区别。哦,是的,当然。我的意思是str[0]=\0
,而不是str=\0
。哦,所以当我调用cin.getline()
,str
将被设置为\0
,而不是调用之前的str
垃圾?@SirJony,这是正确的str
将设置为空字符串,而不是\0
。有什么区别?顺便说一下,我使用的是char[]
,而不是string
。很抱歉没有说清楚。@SirJony,\0
可以是char
的值,而不是字符串。它可以是str[0]
的值,但不能是str
的值。细微但重要的区别。哦,是的,当然。我的意思是str[0]=\0
,而不是str=\0
。