簡體   English   中英

ifstream eof函數(C ++)

[英]ifstream eof function (C++)

我有以下代碼:

string a = "D:\\Users\\user-pc\\Desktop\\testing\\a.txt";

ifstream f;
    /*edit*/ string line;

    /*edit*/ getline(f, line);
f.open(a);
if ( f.eof() )
    cout << "ended";
else
    cout << "nope"

以及沒有任何內容的文件“ a.txt”。

輸出為否,始終為否。 我不明白。我用錯了嗎?

編輯:仍然.eof()不起作用

std::basic_istream<...>::eof()僅在最近提取將流狀態中的相應位設置為適當時返回true。 構造文件流時,其流狀態始終為std::ios_base::goodbit

一種替代方法是檢查下一個可用字符是否為EOF字符:

if (f.peek() == std::char_traits<char>::eof())

只有在讀取嘗試讀取文件末尾之后才設置eofbit錯誤狀態標志。

暫無
暫無

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

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