C ++ 11以降、 good() 代わりに暗黙の 演算子bool を使うことができます: ifstream my_file("");
if (my_file) {
// read away}
C ++ 17、クロスプラットフォーム: std::filesystem::exists ファイルの存在をチェックし、 std::filesystem::status & std::filesystem::perms 読みやすさをチェック std::filesystem::exists : #include
#include // C++17
namespace fs = std::filesystem;
/*! \return True if owner, group and others have read permission,
i. e. at least 0444. */
bool IsReadable(const fs::path& p)
{
std::error_code ec; // For noexcept overload usage. auto perms = fs::status(p, ec). permissions();
if ((perms & fs::perms::owner_read)! ファイル/ディレクトリの存在確認 - rabbitfoot530's diary. = fs::perms::none &&
(perms & fs::perms::group_read)! = fs::perms::none &&
(perms & fs::perms::others_read)! = fs::perms::none)
return true;}
return false;}
int main()
fs::path filePath("path/to/");
if (fs::exists(filePath, ec) &&! ec)
if (IsReadable(filePath))
std::cout << filePath << " exists and is readable. ";}}}
また、 ファイルタイプを 確認することを検討してください。
lesystem 使用することができます。 それは boost::filesystem::exist 関数を持っています。 私はどのように読み取りアクセス権をチェックするか分からない。 lesystem も見ることができます。 しかし、実際にファイルを読み込もうとするよりも、他の(移植可能な)方法はないでしょう。
あなたがUNIX上にいるなら、 access() は読み込み可能かどうかをあなたに伝えます。 しかし、ACLが使用されている場合は、より複雑になります。この場合、ifstreamでファイルを開き、読み込みを試みるのが最善です。ACLが読み込めない場合、ACLが読み込みを禁止する可能性があります。
私は、最終的にはLinuxを使っているポスターだと知っていますが、誰もWindows用の PathFileExists() APIコールについて言及していないのは驚きです。 ライブラリと Shlwapi.
C++ でファイルが存在するかどうかを確認する方法 | Delft スタック
stat 関数は、ファイルやディレクトリの状態を取得します。
この関数は、C言語のライブラリ関数(標準関数)ではありませんので、コンパイラにより、使えない場合があります。
#include
ファイルの存在を確認する | Programming Place Plus C言語編 逆引き
ファイルやフォルダなどへのパスが有効であるかを確認します。
書式
BOOL PathFileExists(
LPCTSTR pszPath);
【インクルードファイル】
shlwapi. h
【必要追加ライブラリ】
戻り値
ファイルが存在する場合は、TRUE。それ以外はFALSE。
FALSEの場合はGetLastError()を呼ぶことでエラー詳細情報を取得できます。
引数
pszPath
NULL終端された最大MAX_PATH長の文字列。
解説
引数で指定されたパスが有効であるかを確認します。
使用例
〈サンプルプログラム〉
#include
#include
#pragma comment(lib, "")
int main()
{
// 存在するファイル
char buffer_1[] = "C:\\TEST\\";
char *lpStr1;
lpStr1 = buffer_1;
// 存在しないファイル
char buffer_2[] = "C:\\TEST\\";
char *lpStr2;
lpStr2 = buffer_2;
int retval = PathFileExists(lpStr1);
printf("ファイルパス:%s ", lpStr1);
if(0 == retval)
printf("は存在しない。戻り値は%d\n", retval);}
else
printf("は存在する。 戻り値は%d\n", retval);}
// Search for the presence of a file with a false result. ファイルの存在を確認する | Programming Place Plus C言語編 逆引き. retval = PathFileExists(lpStr2);
printf("ファイルパス:%s ", lpStr2);
return 0;}
〈出力〉
ファイルパス: C:\TEST は存在する。 戻り値は1
ファイルパス: C:\TEST は存在しない。戻り値は0
対応情報
DLL Version: version 4. 71 以上。
Windows NT/2000:Windows NT 4. 0/2000 Internet Explorer 4. 0以降
Windows 95/98:Windows 95/98 Internet Explorer 4.
C言語でファイルの存在を確認するにはどうすればよいのでしょうか? - ... - Yahoo!知恵袋
ファイルを削除する | Programming Place Plus C言語編 逆引き
先頭へ戻る
Programming Place Plus トップページ – C言語編 – 逆引き
この章の概要
この章の概要です。
目的
方法①(remove関数を使う)
C言語の標準ライブラリ関数を使った方法で、どの環境でも使えるはず
しかし、ファイルが存在しなかったり、オープンされていたりしたときの挙動が処理系に任されており、そのまま使うと移植性がない
方法②(_unlink関数を使う)[非標準]
確実だが、C言語の標準ライブラリ関数ではないため、使えない環境もあり得る
方法③(DeleteFile関数を使う)[Windows]
Windows限定
存在しているファイルを削除したいとします。
C言語の標準ライブラリには、ファイルを削除する目的で使用できる remove関数 があります。 remove関数は、厳密には「その名前でのファイルへのアクセスを、再びファイルを生成しない限り、不可能にする」という処理を行うことになっていますが、 普通、これはファイルを削除していると考えて良いはずです。
#include
/*
ファイルを削除する。
fileName: 削除するファイルの名前
戻り値: 成功したら 0以外、失敗したら 0
*/
int deleteFile ( const char * fileName)
{
return! ( remove ( fileName));}
int main ( void)
if ( deleteFile ( "")) {
puts ( "ファイルを削除しました。");}
else {
puts ( "ファイルの削除に失敗しました。");}
return 0;}
実行結果:
ファイルを削除しました。
remove関数の引数には、削除したいファイルの名前を指定します。 戻り値は、ファイルの削除に成功すると 0 を、失敗すると 0以外を返します。 真の方が失敗であることに注意してください。
指定した名前を持ったファイルが存在していなかったり、オープンされていたりした場合の結果は処理系定義 です。 Windows (Visual Studio) の場合、いずれも失敗と扱われます。
C言語の標準ライブラリ関数ではありませんが、 _unlink関数 でもファイルの削除が行えます。
return!
質問日時: 2011/11/24 12:55
回答数: 2 件
if( access( "*", 0)! = -1) //ワイルドカードで存在CHK
{
//存在しない時}
このようにやりたいのですが、
実験すると、*は使えないようです
何かやりかたないでしょうか? access じゃなくてもかまいません
※vc++環境です
よろしくお願いします
No. 1 ベストアンサー
回答者:
Tacosan
回答日時: 2011/11/24 13:05
0
件
この回答へのお礼 早速で有難うございます
使わせていただきます
お礼日時:2011/11/24 13:46
No. 2
redfox63
回答日時: 2011/11/24 13:14
ワイルドカードを使ったファイルの検索ですと WinAPIのFindFirstFile、FindNextFile、FindCloseを使うことになると思います
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile( "*", &FindFileData);
if ( hFind == INVALID_HANDLE_VALUE) {
// 存在しない場合} else {
// 存在する場合
// ileName に見つけたファイルの名前を取得
// つぎの合致するファイルの取得には
// FindNextFile( hFind, &FIndFileData);
// を実行します
FindClose( hFind);}
最初の方がいらしたのでお礼のみ述べさせていただきます
お礼日時:2011/11/24 13:44
お探しのQ&Aが見つからない時は、教えて! gooで質問しましょう! このQ&Aを見た人はこんなQ&Aも見ています
h> struct seiseki{ int id; double avg; int english; int math; int phys;}; double average(struct seiseki *s); void input_seiseki(int id, struct seiseki *s); void print_seiseki(struct seiseki s); int main(){ struct seiseki student[3]; int i; for(i = 0; i < 3; i++){ input_seiseki(i + 1, student); //student student[i] = average(student); //student print_seiseki(student[i]); //student[i]} return 0;} double average(struct seiseki *s){ double f = 0. 0; f = (double)( s->english + s->math + s->phys)/3; return f;} void input_seiseki(int id, struct seiseki *s){ s->id = id; printf("学籍番号%d さんの成績を入力してください¥n", s->id); printf("英語: "); scanf("%d", &s->english); printf("数学: "); scanf("%d", &s->math); printf("物理: "); scanf("%d", &s->phys);} void print_seiseki(struct seiseki s){ printf("学籍番号%d さんの成績: ¥n", ); printf("英語:%d, 数学:%d, 物理:%d¥n", s. english,, ); printf("平均点:%2. 1f¥n", ); if( < 60){ printf("もう少しがんばりましょう¥n");}} C言語関連 Windows10のC#のForm上に描いた直線の変更方法に関する質問です。 注)この場合には、pictureBoxは使用しないコードを使用しています。 Q1)Form上に直線を描き、 Form1_Paintルーチンの起動の 度に、汎用変数の cntによりその線色を変更したいのですが、 旨く変更できません。 つまりFormを起動した時に描画したものを変更できない様です。 線色の変更の為の正しいコードをお教え頂けますと大変有難いです。 ========== private void Form1_Paint(object sender, PaintEventArgs e) { cnt++; // Graphics オブジェクトを取得 Graphics g = aphics; if ((cnt% 2) == 1){ // 青色,太さ 2 のペンを定義 Pen pen = new Pen(, 3); // (20, 20) から (200, 200) まで直線を描画 g. DrawLine(pen, 100 + cnt, 100 + cnt, 150, 150); pen.
5日分)
78, 790円
1ヶ月より4, 130円お得
149, 270円
1ヶ月より16, 570円お得
12, 160円
(きっぷ9日分)
34, 670円
1ヶ月より1, 810円お得
65, 680円
1ヶ月より7, 280円お得
東急東横線 特急 飯能行き 閉じる 前後の列車
2駅
東京メトロ半蔵門線 急行 南栗橋行き 閉じる 前後の列車
4番線着
都営大江戸線 普通 新宿方面 光が丘行き 閉じる 前後の列車
10駅
国立競技場
21:35
21:37
条件を変更して再検索
武蔵小杉駅から東京駅(2020年08月23日) 鉄道乗車記録(乗りつぶし) By クロちゃんさん | レイルラボ(Raillab)
神奈川県川崎市の人口が、右肩上がりで増え続けている。昨年には約152万6, 000人に達し、兵庫県神戸市の人口を抜いた。日本全体が少子高齢化・人口減少社会に突入して久しい。それでも、川崎市の人口増加はとどまるところを知らない。今後も増加が見込まれている。
ただ、一口に川崎市といっても、その範囲は広い。人口増加を牽引するのは、タワーマンションが多く林立するエリアだ。川崎市でタワマンが多く立ち並ぶエリアといえば、すぐに思い浮かぶのは武蔵小杉駅の近隣だろう。近年になって鉄道の便が格段に向上した武蔵小杉駅は、東京都心部へ通勤するサラリーマンからもてはやされた。そうした若い世帯が多く居住し、街には活気がみなぎっている。
最近は武蔵小杉駅だけではなく、ほかの地域にも活気が波及。同様にタワマンが増え、人口も伸びている。特に南武線の沿線は、多くのオフィスや工場が並び、そこへ通勤する人たちが住まいを構えるようになった。南武線の沿線人口は増え、相対的に南武線の利用者も増えた。朝夕のラッシュ時には、混雑を見せる。南武線は川崎駅と東京都の立川駅とを結んでいるが、途中駅の尻手駅から分岐して浜川崎駅までを結ぶ約4.
あの駅には何がある?(28) 大注目エリアに変貌した小田栄駅(Jr南武線浜川崎支線) | マイナビニュース
出発
武蔵小杉
到着
東京
逆区間
JR横須賀線
の時刻表
カレンダー
和光市駅 時刻表|東京メトロ副都心線|ジョルダン
武蔵小杉駅 は、神奈川県川崎市にあります。JR・東急と2つの鉄道会社を使える上に、それらが相互乗り入れしている主要駅や空港へのアクセスもよく、注目度が高い街です。 ただし、実際の住み心地のよさについては、一人暮らしを始めてからでないとわからないこともあります。特にアクセスについては、毎日通う会社への通勤ラッシュがどれくらい混雑しているものなのかなどは、引っ越して実際に朝の電車を体験してはじめて実感することでしょう。 そこでINTAI編集部が実際に朝の通勤時間帯に、世界最多の乗降員数を誇る 新宿駅 に向かうと仮定して、混み具合や混雑率などの通勤情報をリサーチしてみました。 朝9時前に新宿に到着する場合には、どのような混雑が待ち受けているのでしょうか。ラッシュにあわずに混雑時間を避け、椅子に座ることはできるのでしょうか? 後半には、実際に乗車して体験した生の声もお届けします!
gooで質問しましょう! このQ&Aを見た人はこんなQ&Aも見ています