while(getline())在最后一次传递后没有空字符串循环

时间:2016-05-15 22:37:16

标签: c++

因此,每当我使用while循环从文件中读取字符串时,总会有一个额外的空字符串,最后处理。     ifstream fin(" A7infile.txt");

while(getline(fin,line))
{
    cout<<"Original Line: "<<line<<endl<<endl;
    breakup(line,first,middle,last);
    cout<<first<<" :is first"<<endl;
    cout<<middle<<" :is middle"<<endl;
    cout<<last<<" :is last\n"<<endl;
    neww=makealpha(first,middle,last);
    cout<<neww<<" :is the alphabetized line\n"<<endl;
}
fin.close();
return 0;

这就是我所说的空字符串

Original Line: lolipops And Rainbows

lolipops :is first
And :is middle
Rainbows :is last

And Rainbows lolipops :is the alphabetized line

Original Line:

:is first
:is middle
:is last

:is the alphabetized line

如何在最后一次传球中摆脱空字符串?

2 个答案:

答案 0 :(得分:1)

std::string::emptyreference)可用于检查std::string是否为空。

因此,请检查line是否为空,如果不是,请运行您的代码,否则不执行任何操作。

示例:

while (getline(fin, line))
{
    if (!line.empty())
    {
        // Your logic here...
    }
}

答案 1 :(得分:0)

如果您想在文件的末尾或中间跳过空行,可以在循环体上添加一个检查以跳过它们:

while(getline(fin,line)) {
    if (line.empty()) {
        continue;
    }
    // the rest of your code goes ehre
}