C++相談室 part166 (574レス)
上下前次1-新
抽出解除 レス栞
322(1): デフォルトの名無しさん (ワッチョイ 8101-1tcn) [sage] 2025/06/17(火) 11:27:27.12 ID:2aAnRxo/0(1) AAS
>>321
ifs.close()前にifs.fail()は真を返す
#include <iostream>
#include <fstream>
int main() {
constexpr auto path = "tmp.txt";//なんでもいいです
std::ifstream ifs(path);
if(ifs.fail()){
std::cerr << "File open error: " << path << std::endl;
return -1;
}
std::string buf;
std::cout << "0: " << ifs.fail() << '\n';
while(std::getline(ifs, buf))
std::cout << buf << std::endl;
std::cout << "1: " << ifs.fail() << '\n';
ifs.close(); //←これ
std::cout << "2: " << ifs.fail() << '\n';
if(ifs.fail()){
std::cerr << "File close error: " << path << std::endl;
return -1;
}
return 0;
}
326: デフォルトの名無しさん (ワッチョイ b1d6-xkro) [sage] 2025/06/17(火) 12:43:21.70 ID:4NySVCEQ0(2/2) AAS
>>322,324,325
ありがとうございました。勉強になります。
ProgramminPlacePlus でのサンプルを元にしました。
なーる真面目にやるなら閉じる前後で色々とやらんといかんのですね。
今までは
readdata=string((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>());
の感じで、一気にファイル内容をstrigに取り込むような場合は、もう読み込みは無いのですぐに
ifs.close()してました。
デストラクタに任せてもいいのですが、今後も使わなくなったら、即close()したいと思います。
そんなにシビアにならんでもいいようですし・・・mOm
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.152s*