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
6条答案
按热度按时间siotufzp1#
让我们把
std::cin.getline()
拆开。首先,有std::
。这是标准库所在的命名空间。它有数百个类型,函数和对象。std::cin
就是这样一个对象。它是标准的字符输入对象,在<iostream>
中定义。它有自己的一些方法,但你也可以使用它与许多自由函数。这些方法和函数大多是从标准输入中获取一个或多个字符的方法。最后,
.getline()
是std::cin
的一种方法(和其他类似的对象)。你告诉它应该从它左边的对象中获取多少个字符(这里是std::cin
),以及放置这些字符的位置。字符的精确数量可以变化:.getline()
将在三种情况下停止:1.到达行尾2.输入中没有剩余字符(在std::cin
上通常不会发生,因为您可以继续键入)3.读取最大字符数。std::cin
对象还可以使用其他方法和函数,例如:字符串
eivgtgni2#
如果使用char*,则
std::cin.getline
获取行,而不是std::cin
获取第一个字。mnemlml83#
您是否阅读了任何文档(例如http://www.cplusplus.com/reference/string/getline/)?
基本上,
std::cin
(或更一般地,任何std::istream
)直接用于获得格式化的输入,例如int x; std::cin >> x;
。std::cin.getline()
仅用于填充原始char *
缓冲区。ttisahbt4#
(Very我的回答是,
std :: cin.getline()
可以包含空格,而std :: cin >>
不能。w8f9ii695#
正如其他人已经回答的那样(甚至更好),粗略地说,使用
getline()
读取整行(即以\n
终止的字符串),cin>>var
读取与var
类型兼容的数字(整数,浮点数,双精度等)或单个单词。在这个答案中,我想强调一个问题,当混合这两种方法时会出现。当你这样做时:
字符串
cin
留下一个行尾\n
,然后由getline();
读取。使用cin.ignore()
可以克服这个问题。型
pkln4tw66#
使用std::cin >> std::ws会跳过空格,特别是换行符,并在输入实际内容的地方继续阅读。
字符串