cin.getline(ch,'\n')这条语句怎么解释?

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:21:29
cin.getline有三种格式:不带参数的(cin.getline()),带一个参数的(cin.getline(ch)),带三个参数的(例cin.getline(ch,n,'\n'))。我个人认为,第三种完全可以代替前两种格式。
但是cin.getline(ch,'\n')这个算哪条解释呢?
cin.getline(ch,'\n')在整个程序中它的意思是遇到换行符结束读入吧?cin.getline有三种格式,要是它可以省掉第二个参数,那就应该出现第四种格式了吧?没听说啊。

很显然,cin.getline(ch,'\n')应该被第三条解释,即:
带三个参数的cin.getline(ch,n,'\n')。只是需要注意的是此时cin.getline(ch,'\n')中的'\n'的值被解释为数组长度了。

使用cin.getline(ch,'\n')不能得到楼主所说“在整个程序中它的意思是遇到换行符结束读入”的结果。根据getline的定义,第二个参数被解释为读入的字符串的最大长度。而使用cin.getline(ch,sizeof(ch))反而能够得到楼主所说的结果,因为第三个参数的缺省值就是'\n'。

cin.getline(ch,'\n')应该算是第三条解释,它读取一行,字符数可以省略,

istream &getline( char *buffer, streamsize num );
istream &getline( char *buffer, streamsize num, char delim );

getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:

num - 1个字符已经读入,
碰到一个换行标志,
碰到一个EOF,
或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。