C++编程题:展示函数getline和有三个参数的get函数都会在输入流中遇到指定分隔符后而停止字符串的读入? 50
编写一个程序,展示函数getline和有三个参数的get函数都会在输入流中遇到指定分隔符后而停止字符串的读入。并展示get函数将结束符留在输入流中,而getline则将分...
编写一个程序,展示函数getline和有三个参数的get函数都会在输入流中遇到指定分隔符后而停止字符串的读入。并展示get函数将结束符留在输入流中,而getline则将分隔符从流中提取出来并丢弃。在流中没有被读取的字符会怎样?
展开
展开全部
通过标准输入设备向输入流输入一行字符串有两种方式:get函数和getline函数,两者都是类istream的对象cin的成员函数,下面我们来看看两者的区别。
getline函数
getline()函数读取整行,他使用通过ENTER键输入的换行符来确定输入的末尾,但不保存换行符,相反,在存储字符串时,他用空值字符来替换换行符。要调用该函数,可以使用cin.getline(arrayname,strnum),第一个参数表示用来存储输入行的数组名,第二个参数表示输入的字符数。如果字符数为20,则函数最多读取19个字符,余下的用来存储自动在结尾处添加的空值字符。
getline函数在读取指定数目的字符或遇到换行符时停止读取。
get函数
get函数有几种变体,其中一种和getline很像,接收参数相同,解释参数的方式也相同,并且都读取到行尾,但get并不读取并丢弃换行符,而是将其留在输入队列中。
假设两次调用get():
cin.get(name1,size1);
cin.get(name2,size2);
由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符,因此第二个get函数认为已到达行尾,而没有发现任何可读取的内容,即数组name2值为空。
解决方法是借助get(),无参数的函数。其功能是读取下一个字符。
cin.get(name1,size1);
cin.get();
cin.get(name2,size2);
4
注:cin.get(name,size)函数仍返回一个cin对象,因此上述代码可以写为
cin.get(name1,size1).get();
getline函数
getline()函数读取整行,他使用通过ENTER键输入的换行符来确定输入的末尾,但不保存换行符,相反,在存储字符串时,他用空值字符来替换换行符。要调用该函数,可以使用cin.getline(arrayname,strnum),第一个参数表示用来存储输入行的数组名,第二个参数表示输入的字符数。如果字符数为20,则函数最多读取19个字符,余下的用来存储自动在结尾处添加的空值字符。
getline函数在读取指定数目的字符或遇到换行符时停止读取。
get函数
get函数有几种变体,其中一种和getline很像,接收参数相同,解释参数的方式也相同,并且都读取到行尾,但get并不读取并丢弃换行符,而是将其留在输入队列中。
假设两次调用get():
cin.get(name1,size1);
cin.get(name2,size2);
由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符,因此第二个get函数认为已到达行尾,而没有发现任何可读取的内容,即数组name2值为空。
解决方法是借助get(),无参数的函数。其功能是读取下一个字符。
cin.get(name1,size1);
cin.get();
cin.get(name2,size2);
4
注:cin.get(name,size)函数仍返回一个cin对象,因此上述代码可以写为
cin.get(name1,size1).get();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询