什么时候应该使用std::cin.getline()?它与std::cin有什么不同
发布于 2011-01-20 18:34:58
在使用char*的情况下,std::cin.getline获取行,而不是std::cin获取第一个单词。
发布于 2011-01-20 20:38:51
让我们把std::cin.getline()拆开。首先是std::。这是标准库所在的命名空间。它有数百种类型、函数和对象。
std::cin就是这样一个对象。它是在<iostream>中定义的标准字符输入对象。它有自己的一些方法,但您也可以将其与许多免费函数一起使用。这些方法和函数中的大多数都是从标准输入中获取一个或多个字符的方法。
最后,.getline()是std::cin (和其他类似对象)的一种方法。您告诉它应该从左侧的对象中获取多少个字符(这里是std::cin),以及将这些字符放在哪里。字符的确切数量可能会有所不同:.getline()会在三种情况下停止: 1.到达行尾2.输入中没有剩余的字符(在std::cin上不会正常发生,因为您可以继续键入) 3.读取最大字符数。
还有其他方法和函数可以与std::cin对象一起使用,例如
std::string s;
int i;
std::cin >> s; // Read a single word from std::cin
std::cin >> i; // Read a single number from std::cin
std::getline(std::cin, s); // Read an entire line (up to \n) from std::cin
std::cin.ignore(100); // Ignore the next 100 characters of std::cin发布于 2011-01-20 18:30:45
您是否阅读了任何文档(例如http://www.cplusplus.com/reference/string/getline/)?
基本上,直接使用std::cin (或者更一般地说,任何std::istream)来获得格式化的输入,例如int x; std::cin >> x;。std::cin.getline()只是用来填充原始的char *缓冲区。
https://stackoverflow.com/questions/4745858
复制相似问题