在C++中, 如果我们需要从流中读取少量句子, 则通常首选的方法是使用getline()函数。它可以读取直到遇到换行符或看到用户提供的定界符。
这是一个使用C++的示例程序, 该程序读取四个句子并在最后显示”:newline”
//A simple C++ program to show working of getline
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str;
int t = 4;
while (t--)
{
//Read a line from standard input in str
getline(cin, str);
cout <<str <<" : newline" <<endl;
}
return 0;
}
样本输入:
This
is
Geeks
for
如预期的输出是:
This : newline
is : newline
Geeks : newline
for : newline
上面的输入和输出看起来不错, 当输入之间有空白行时可能会出现问题。
样本输入:
This
is
Geeks
for
输出如下:
This : newline
: newline
is : newline
: newline
它不会打印最后两行。原因是即使未读取任何字符, getline()也会读取直到遇到enter。因此, 即使第三行没有任何内容, getline()也会将其视为单行。进一步观察第二行中的问题。
可以修改代码以排除此类空白行。
修改后的代码:
//A simple C++ program that uses getline to read
//input with blank lines
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str;
int t = 4;
while (t--)
{
getline(cin, str);
//Keep reading a new line while there is
//a blank line
while (str.length()==0 )
getline(cin, str);
cout <<str <<" : newline" <<endl;
}
return 0;
}
输入如下:
This
is
Geeks
for
输出如下:
This : newline
is : newline
Geeks : newline
for : newline
本文作者:沙林·南达(Sarin Nanda)。如果你喜欢srcmini并希望做出贡献, 那么你也可以写一篇文章并将你的文章邮寄到contribution@srcmini.org。查看你的文章出现在srcmini主页上, 并帮助其他Geeks。
评论前必须登录!
注册