- 论坛徽章:
- 14
|
标准文档上这么规定的:
basic_istream<charT,traits>& getline(char_type*s, streamsizen, char_typedelim);
……
n-1 characters are stored (in which case the function calls setstate(failbit)).
就是说,当你给的接受区满了后,就failbit
标准文档还给了个例子:- #include <iostream>
- int main()
- {
- using namespace std;
- const int line_buffer_size = 100;
- char buffer[line_buffer_size];
- int line_number = 0;
- while (cin.getline(buffer, line_buffer_size, '\n') || cin.gcount()) {
- int count = cin.gcount();
- if (cin.eof())
- cout << "Partial final line"; // cin.fail()is false
- else if (cin.fail()) {
- cout << "Partial long line";
- cin.clear(cin.rdstate() & ~ios::failbit);
- } else {
- count--; //Don't include newline incount
- cout << "Line " << ++line_number;
- }
- cout << " (" << count << " chars): " << buffer << endl;
- }
- }
复制代码 |
|