Yu *_*hou 7 c++ get cin getline
我是编程新手,我在C++中有一些问题get()和getline()功能.
我对这两个功能的理解:
该getline()函数读取整行,并使用Enter键传输的换行符来标记输入的结束.该get()函数很像getline()但不是读取并丢弃换行符,而是get()将该字符留在输入队列中.
我正在读的书(C++的Primer Plus)是使用暗示get()过getline().我的困惑是,它不会getline()比get()确保最终更安全'\n'.另一方面,get()只会挂起输入队列中的字符,从而可能导致问题?
Emi*_*lia 15
有相同数量的优点和缺点,并且 - 基本上 - 都取决于您正在阅读的内容:get()将分隔符留在队列中,这样您就可以将其视为下一个输入的一部分.getline()抛弃它,所以下一个输入就在它之后.
如果您正在谈论控制台输入中的换行符,那么丢弃它是非常有意义的,但如果我们考虑来自文件的输入,您可以使用"分隔符"作为下一个字段的开头.
什么是"好"或"安全",取决于你在做什么.
小智 13
cin.getline() 读取输入到 '\n' 并停止
cin.get() 读取输入到 '\n' 并将 '\n' 保留在流中
例如 :
char str1[100];
char str2[100];
cin.getline(str1 , 100);
cin.get(str2 , 100);
cout << str1 << " "<<str2;
input :
1 2
3 4
output 1 2 3 4 // 输出扩展
当反转它们
例如:
char str1[100];
char str2[100];
cin.get(str2 , 100);
cin.getline(str1 , 100);
cout << str1 << " "<<str2;
input :
1 2
3 4
output 1 2 // 输出未扩展,因为 cin.getline() 读取了 '\n'
小智 7
get()从流中提取char并返回其值(转换为整数),然后getline()用于逐行从文件中获取一行.通常,getline用于过滤掉具有平面文件(具有数千行)的应用程序中的分隔符,并希望使用某个分隔符提取输出(逐行),然后对其执行某些操作.