我必须使用 getline() 从文本文件中读取,然后打印出从该文件中读取的最大大小的字符串。如果没有最大尺寸,则打印出第一个字符串。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string largest = "";
string line = "";
while (getline(cin, line, ' '))
{
if (line.size() > largest.size())
{
//then reassign largest to the input (string line)
largest = line;
}
}
cout << largest << endl;
}
文本文件输入读取为:某些带有文本的行
这四个单词的大小应为 4,对于“some”、“line”和“with”来说也是如此。然而,“文本”以 5 号的形式返回。我觉得我错过了一些非常简单的东西。
当你这样做时
getline(cin, line, ' ')
getline
会一直读取直到遇到空格,而这种情况不会在输入结束时发生。输入的末尾有一个换行符,因此会被读入 line
,这就是为什么最后一个输入的大小比您预期的大 1 的原因。
要解决此问题,您可以先读入整行,然后将其拆分,或者您可以只使用
operator >>
,例如
while (cin >> line)
{
if (line.size() > largest.size())
{
//then reassign largest to the input (string line)
largest = line;
}
}