为什么有两个成员函数?
why there are two member functions?
我正在学习 C++,但是,我不明白有什么区别顺便说一句:
std::cin.get();
和
std::cin.getline();
虽然;我知道如何使用它们,但不明白为什么有两个?
我读过这个解释:
getline
reads the newline character then discard it; whereas .get()
reads it then leaves it in the input queue ..!! why each of them does what it does ?
抱歉英语不好:(
"get"只取一个字符,"getline"取所有字符到一个行结束符。这是主要区别。
std::cin.get()
,当不带参数调用时,从输入中读取一个字符并 returns 它。
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_istream and http://en.cppreference.com/w/cpp/string/basic_string/getline。
我正在学习 C++,但是,我不明白有什么区别顺便说一句:
std::cin.get();
和
std::cin.getline();
虽然;我知道如何使用它们,但不明白为什么有两个? 我读过这个解释:
getline
reads the newline character then discard it; whereas.get()
reads it then leaves it in the input queue ..!! why each of them does what it does ?
抱歉英语不好:(
"get"只取一个字符,"getline"取所有字符到一个行结束符。这是主要区别。
std::cin.get()
,当不带参数调用时,从输入中读取一个字符并 returns 它。
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_istream and http://en.cppreference.com/w/cpp/string/basic_string/getline。