首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++如何使用getline()检测eof

C++如何使用getline()检测eof
EN

Stack Overflow用户
提问于 2020-08-04 01:27:32
回答 2查看 67关注 0票数 0

这个问题有一些变体,但没有一个与我想要的完全匹配。

给出了以下代码:

代码语言:javascript
运行
复制
string command="";

while (command.compare("quit")!=0)
{
    os << prompt;
    getline(is,command);
}

如何检测getline是否达到eof (文件结尾)

EN

回答 2

Stack Overflow用户

发布于 2020-08-04 01:31:28

getline返回对您传递给它的流的引用,如果流达到失败状态,则该流的计算结果将为false。了解了这一点后,您可以利用这一点将getline移到while循环的条件中,以便如果它失败,则条件将为false,并且循环停止。您也可以将其组合到quit检查中,如下所示

代码语言:javascript
运行
复制
while (getline(is,command) && command != "quit")
{
    // stuff
}

您还可以将提示添加到循环中,如下所示

代码语言:javascript
运行
复制
while (os << prompt && getline(is,command) && command != "quit")
票数 5
EN

Stack Overflow用户

发布于 2020-08-04 01:30:38

代码语言:javascript
运行
复制
while (command.compare("quit")!=0)
{
    os << prompt;
    getline(is,command);
    if (is.eof())
         do something at end of file
}

但请注意,到达文件末尾并不意味着command中没有内容。您可以同时读取数据和到达文件末尾。

相反,您可能会查找以下内容

代码语言:javascript
运行
复制
os << prompt;
while (getline(is,command) && command != "quit")
{
    do something with command
    os << prompt;
}

如果您到达文件末尾,但没有输入任何内容,或者输入了“quit”,则该代码将退出循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63234211

复制
相关文章

相似问题

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