簡體   English   中英

C++ 如何使用 getline() 檢測 eof

[英]C++ how to detect eof using getline()

這個問題有一些變體,但沒有一個完全符合我正在尋找的內容。

給出以下代碼:

string command="";

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

我如何檢測getline是否達到 eof(文件結尾)

getline返回對您傳遞給它的 stream 的引用,如果 state 發生故障,則 stream 將評估為false 知道了這一點,您可以利用它來將getline移動到 while 循環的條件中,這樣如果它失敗,則條件將為 false 並且循環停止。 你可以結合你的檢查quit以及像

while (getline(is,command) && command != "quit")
{
    // stuff
}

您還可以將提示添加到循環中,例如

while (os << prompt && getline(is,command) && command != "quit")
while (command.compare("quit")!=0)
{
    os << prompt;
    getline(is,command);
    if (is.eof())
         do something at end of file
}

但請注意,到達文件末尾並不意味着command中沒有任何內容。 您可以同時讀取數據並到達文件末尾。

你可能正在尋找的是這個

os << prompt;
while (getline(is,command) && command != "quit")
{
    do something with command
    os << prompt;
}

如果您到達文件末尾並且沒有輸入任何內容,或者如果輸入了“退出”,該代碼將退出循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM