std::getline
Defined in header <string>
|
||
template< class CharT, class Traits, class Allocator > std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input, |
(1) | |
template< class CharT, class Traits, class Allocator > std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input, |
(1) | (since C++11) |
template< class CharT, class Traits, class Allocator > std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input, |
(2) | |
template< class CharT, class Traits, class Allocator > std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input, |
(2) | (since C++11) |
getline
reads characters from an input stream and places them into a string:
UnformattedInputFunction
, except that input.gcount()
is not affected. After constructing and checking the sentry object, performs the following:input
and appends them to str
until one of the following occurs (checked in the order listed)delim
, as tested by Traits::eq(c, delim), in which case the delimiter character is extracted from input
, but is not appended to str
.getline
sets failbit and returns.Parameters
input | - | the stream to get data from |
str | - | the string to put the data into |
delim | - | the delimiter character |
Return value
input
Notes
When used immediately after whitespace-delimited input, e.g. after int n; std::cin >> n;, getline
consumes the endline character left on the input stream by operator>>, and returns immediately. A common solution is to ignore all leftover characters on the line of input with cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); before switching to line-oriented input.