首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while(getline())在最后一次传递后不使用空字符串进行循环

while(getline())在最后一次传递后不使用空字符串进行循环
EN

Stack Overflow用户
提问于 2016-05-16 06:37:16
回答 2查看 135关注 0票数 0

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

代码语言:javascript
复制
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;

这就是我所说的空字符串

代码语言:javascript
复制
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

如何处理最后一次传递中的空字符串?

EN

回答 2

Stack Overflow用户

发布于 2016-05-16 06:45:03

std::string::empty (reference)可用于检查std::string是否为空。

因此,检查line是否为空,如果不为空,则运行代码,否则什么也不做。

示例:

代码语言:javascript
复制
while (getline(fin, line))
{
    if (!line.empty())
    {
        // Your logic here...
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-16 06:40:05

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

代码语言:javascript
复制
while(getline(fin,line)) {
    if (line.empty()) {
        continue;
    }
    // the rest of your code goes ehre
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37244419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档