[解決済み】C++で空のファイルをチェックする
2022-02-09 22:54:12
質問
ファイルが空かどうかを簡単に確認する方法はありますか? 例えば、ある関数にファイルを渡しているときに、それが空であることに気づいたら、すぐにファイルを閉じるような? ありがとうございます。
編集、fseekメソッドを使ってみましたが、「cannot convert ifstream to FILE *」というエラーが出ます。
私の関数のパラメータは
myFunction(ifstream &inFile)
解決方法は?
おそらく、似たようなものでしょう。
bool is_empty(std::ifstream& pFile)
{
return pFile.peek() == std::ifstream::traits_type::eof();
}
短く、甘く。
あなたのエラーについてですが、他の回答はC言語スタイルのファイルアクセスを使用しており、その場合は
FILE*
特定の機能を持つ
それに対して、あなたや私はC++のストリームを扱っているので、それらの関数を使うことはできません。上記のコードは、単純な方法で動作します。
peek()
は、ストリームを覗き込み、次の文字を削除せずに返します。もしファイルの終端に達したなら、それは
eof()
. つまり、私たちはただ
peek()
をストリームで見て、それが
eof()
というのも、空のファイルには覗き見るものがないからです。
なお、これはファイルがそもそも開かれなかった場合にも真を返すので、あなたの場合はうまくいくはずです。もし、そうしたくない場合は
std::ifstream file("filename");
if (!file)
{
// file is not open
}
if (is_empty(file))
{
// file is empty
}
// file is open and not empty
関連
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] ミリ秒単位でスリープ
-
[解決済み] C++でifstreamを使用してファイルを一行ずつ読み込む
-
[解決済み] while ( !feof (file) ) 」は、なぜいつも間違っているのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み】正気で、安全で、効率的な方法でファイルをコピーする。
-
[解決済み】なぜソースファイルの最後に空行を入れることが推奨されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】'std::cout'への未定義の参照