function template
<string>

std::getline (basic_string)

(1)
template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>& is,                                 basic_string<charT,traits,Alloc>& str, charT delim);
(2)
template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>& is,                                 basic_string<charT,traits,Alloc>& str);
(1)
template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>& is,                                 basic_string<charT,traits,Alloc>& str, charT delim);template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>&& is,                                 basic_string<charT,traits,Alloc>& str, charT delim);
(2)
template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>& is,                                 basic_string<charT,traits,Alloc>& str);template <class charT, class traits, class Alloc>  basic_istream<charT,traits>& getline (basic_istream<charT,traits>&& is,                                 basic_string<charT,traits,Alloc>& str);
从流中获取一行到字符串
is中提取字符并将它们存储到str中,直到找到分隔符delim(或对于(2),换行符)。

如果在is中到达文件结尾,或者在输入操作期间发生其他错误,提取也会停止。

如果找到分隔符,则提取并丢弃它(即,它不会被存储,并且下一个输入操作将在它之后开始)。

请注意,调用之前str中的任何内容都将被新提取的序列替换。

每个提取的字符都附加到basic_string,就像调用了其成员push_back一样。

参数

的 C++ 等效文件是
从中提取字符的basic_istream对象。
str
存储提取行的basic_string对象。

返回值

与参数is相同。

如果以下情况发生,则对此函数的调用可能会设置is的任何内部状态标志

标志错误
eofbit在操作期间达到字符源的结尾。
failbit获得的输入不能被解释为此类型对象的有效文本表示。
在这种情况下,distr保留调用之前它所具有的参数和内部数据。
请注意,某些eofbit情况也会设置failbit.
badbit发生了上述以外的错误。
(有关这些的更多信息,请参见ios_base::iostate

此外,在任何这些情况下,如果已使用is的成员函数basic_ios::exceptions设置了适当的标志,则会引发ios_base::failure类型的异常。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// extract to string
#include <iostream>
#include <string>

main ()
{
  std::string name;

  std::cout << "Please, enter your full name: ";
  std::getline (std::cin,name);
  std::cout << "Hello, " << name << "!\n";

  return 0;
}

复杂度

未指定,但通常与str的最终长度呈线性关系。

迭代器有效性

str相关的任何迭代器、指针和引用都可能无效。

数据竞争

两个对象isstr都被修改。

异常安全

基本保证:如果抛出异常,isstr都将以有效状态结束。

另见