std::getline

来自cppreference.com
< cpp‎ | string‎ | basic string


 
 
 
std::basic_string
 
定义于头文件 <string>
template< class CharT, class Traits, class Allocator >

std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,
                                           std::basic_string<CharT,Traits,Allocator>& str,

                                           CharT delim );
(1)
template< class CharT, class Traits, class Allocator >

std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input,
                                           std::basic_string<CharT,Traits,Allocator>& str,

                                           CharT delim );
(1) (C++11 起)
template< class CharT, class Traits, class Allocator >

std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>& input,

                                           std::basic_string<CharT,Traits,Allocator>& str );
(2)
template< class CharT, class Traits, class Allocator >

std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input,

                                           std::basic_string<CharT,Traits,Allocator>& str );
(2) (C++11 起)
getline从输入流中读取字符,并把它们转换成字符串
原文:
getline reads characters from an input stream and places them into a string:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
1)
的行为就像UnformattedInputFunction,除了input.gcount()不会受到影响。在构造和检查岗哨对象的,执行以下操作:
原文:
Behaves as UnformattedInputFunction, except that input.gcount() is not affected. After constructing and checking the sentry object, performs the following:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
1)
调用str.erase()
原文:
Calls str.erase()
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
2)
input并把它们添加到str的字符提取出来,直到发生以下情况之一中列出的顺序进行检查
原文:
Extracts characters from input and appends them to str until one of the following occurs (checked in the order listed)
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
a)
input文件结束的条件,在这种情况下,getlineeofbit和回报.
原文:
end-of-file condition on input, in which case, getline sets eofbit and returns.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
b)
下一个可用的输入字符delimTraits::eq(c, delim),在这种情况下,分隔符是从input提取进行了测试,但不会追加到str.
原文:
the next available input character is delim, as tested by Traits::eq(c, delim), in which case the delimiter character is extracted from input, but is not appended to str.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
c)
str.max_size()字符,在这种情况下,已经被存储getlinefailbit并返回.
原文:
str.max_size() characters have been stored, in which case getline sets failbit and returns.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
3)
如果没有字符提取任何理由(甚至没有被丢弃的分隔符),getlinefailbit,并返回.
原文:
If no characters were extracted for whatever reason (not even the discarded delimiter), getline sets failbit and returns.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
2)
getline(input, str, input.widen(’\n’)),也就是默认的分隔符是底线字符.
原文:
Same as getline(input, str, input.widen(’\n’)), that is, the default delimiter is the endline character.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 参数

input -
流中获取数据
原文:
the stream to get data from
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
str -
把数据转换成字符串
原文:
the string to put the data into
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
delim -
分隔符
原文:
the delimiter character
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 返回值

input

[编辑] 示例

下面的代码要求用户输入他们的名字,然后迎接他们用这个名字.
原文:
The following code asks the user for their name, then greets them using that name.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

#include <string>
#include <iostream>
 
int main()
{
    std::string name;
    std::cout << "What is your name? ";
    std::getline(std::cin, name);
    std::cout << "Hello " << name << ", nice to meet you.";
}

可能的输出:

What is your name? John Q. Public
Hello John Q. Public, nice to meet you.