我是编程新手,对C++中的get()getline()函数有一些疑问。

我对这两个功能的理解:
getline()函数读取整行,并使用Enter键传输的换行符标记输入的结尾。 get()函数与getline()非常相似,但get()不会读取并丢弃换行符,而是将该字符保留在输入队列中。

我正在阅读的书(C++ Primer Plus)建议使用get()而不是getline()。我的困惑是getline()不比get()安全,因为它确保以'\n'结尾。另一方面,get()只会将字符卡在输入队列中,从而可能引起问题?

最佳答案

有很多优点和缺点,并且-基本上-都取决于您正在阅读的内容:get()将分隔符留在队列中,因此您可以将其视为下一个输入的一部分。 getline()丢弃它,因此下一个输入将在它之后。

如果要从控制台输入中谈论换行符,则完全有必要将其丢弃,但是如果考虑文件中的输入,则可以将下一个字段的开头用作“定界符”。

做什么是“好”还是“安全”,取决于您在做什么。

关于c++ - cin.get()和cin.getline()之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26873401/

10-16 04:47