簡體   English   中英

關於使用ifstream確定C ++中是否存在文件的問題

[英]Question about deciding whether a file exists in C++ using ifstream

我找到了一個c ++代碼,它使用ifstream來決定文件是否存在。 那部分是,

if (!ifstream(trajectory_file_name_)) {
    cerr << "ERROR: The trajectory file:";
    cerr << "\033[1;34m";
    cerr << trajectory_file_name_;
    cerr << "\033[0m";
    cerr << " does not exist.";
    cerr << endl;
    exit(1);
}

從教科書中學到的東西(比如“c ++ primer plus”)就像判斷ifstream是否存在文件一樣,

ifstream inFile(filename-);
if(!inFile.is_open())
{
  return;
}

我搜索了很多網站,但沒有找到第一個的任何信息。 所以我想知道是否有人可以給我一些關於第一個ifstream的使用的解釋。 謝謝!

這歸結為如何轉換為bool (或者在這種情況下,它是由於operator! ,但原理相同)。

它的設計使得,簡而言之,您可以檢查開放性( 和錯誤標志 ),如:

std::ifstream ifs("path");
if (!ifs)
{
   // ...
}

(未能打開設置failbit )。

你的版本只是跳過聲明並用臨時做同樣的事情。

請注意,文件可能無法打開的其他原因,例如權限。 這不是檢查它是否存在的可靠方法,即使它確實存在,也無法保證它在您嘗試使用它時仍然存在。

暫無
暫無

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

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