4.2.4 每次读取一行字符串输入(3)

2013-10-07 15:38:10 · 作者: · 浏览: 94

4.2.4  每次读取一行字符串输入(3)

3.空行和其他问题

当getline( )或get( )读取空行时,将发生什么情况?最初的做法是,下一条输入语句将在前一条getline( )或get( )结束读取的位置开始读取;但当前的做法是,当get( )(不是getline( ))读取空行后将设置失效位(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入:

 

另一个潜在的问题是,输入字符串可能比分配的空间长。如果输入行包含的字符数比指定的多,则getline( )和get( )将把余下的字符留在输入队列中,而getline( )还会设置失效位,并关闭后面的输入。

第5、6章和第17章将介绍这些属性,并探讨程序如何避免这些问题。