【问题标题】:why there are two member functions?为什么有两个成员函数?
【发布时间】:2015-04-18 11:19:15
【问题描述】:

我正在学习 c++,但是,我不明白 BTW 有什么区别:

std::cin.get();

std::cin.getline();

虽然;我知道如何使用它们中的每一个,但不明白为什么会有两个? 我读过这个解释:

getline读取换行符然后丢弃它;而.get()reads 然后将其留在输入队列中..!!为什么他们每个人都这样做?

抱歉英语不好:(

【问题讨论】:

标签: c++ iostream istream


【解决方案1】:

std::cin.get(),当不带参数调用时,从输入中读取一个字符并返回。

std::cin.getline(char* str, std::streamsize count) 读取一行输入并将其复制到缓冲区str,后跟一个额外的空字符以形成一个 C 字符串。 count 必须是该缓冲区的大小,即它可以复制到其中的最大字符数(加上空字节)。

要在不关心缓冲区大小的情况下读取一行,最好使用std::getline

#include <string>
std::string line;
std::getline(std::cin, line);

cin 读取一行到line

参见http://en.cppreference.com/w/cpp/io/basic_istreamhttp://en.cppreference.com/w/cpp/string/basic_string/getline

【讨论】:

  • get 具有读取行终止符的重载。我想这就是 OP 所要求的。
【解决方案2】:

"get" 只获取一个字符,"getline" 获取所有字符到一个行终止符。这是主要区别。

【讨论】:

  • get 具有读取到行终止符的重载。我想这就是 OP 所要求的。
  • 我相信 OP 询问的是 #4#2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2022-11-19
相关资源
最近更新 更多