[英]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.