前提・実現したいこと
C++でvectorの配列になっているifstreamに連番の2種類のcsvファイルを読み込もうとしています。
ファイル構造は実行ファイルと同階層に2つの各csvの格納フォルダが配置されており、
その中に読み込む対象のcsvファイルがあります。
発生している問題・エラーメッセージ
forループで連番のcsvを順に読み込んでいるのですが、
最初の方は読み込めているもののある程度読み込んだところからパスは正しく設定されていると思うのですが、
読み込めなくなってしまいます。(fail()の実行結果がtrueになっています)
また、同じファイルでも読み込める場合と読み込めない場合がありました
該当のソースコード
C++
1 2#include <windows.h> 3#include <vector> 4#include <string> 5#include <filesystem> 6#include <fstream> 7#include <iostream> 8#include <sstream> 9 10void Readcsv() 11{ 12 vector <ifstream>CsvFile1;//csv1 13 vector <ifstream>CsvFile2;//csv2 14 15 CsvFile1.resize(8192); 16 CsvFile2.resize(8192); 17 18 int i; 19 20 for (i = 0; i < 8192; i++) 21 { 22 //csvファイル読み込み 23 filesystem::path csv1Pass;//csv1格納パス 24 filesystem::path csv2Pass;//csv2格納パス 25 26 char c0[16] = {}; 27 sprintf_s(c0, "%d.csv", i);//数値→文字列変換 28 29 csv1Pass= RootPass;//実行ファイルのパス(予め取得済) 30 csv1Pass.append("csvdir1");//csv1格納フォルダ名 31 csv1Pass.append(c0);//ファイル名を追加 32 33 string s0; 34 s0 = csv1Pass.string();//pathをstringに変換 35 CsvFile1[i].open(s0);//読み込み 36 37 //読み込み失敗時 38 if (CsvFile1[i].fail()) 39 { 40 log<<"csvFile1 "<<i<<".csv open failed"<<endl; 41 } 42 43 csv2Pass= RootPass;//実行ファイルのパス 44 csv2Pass.append("csvdir2");//csv2格納フォルダ名 45 csv2Pass.append(c0);//ファイル名を追加 46 47 string s1; 48 s1 = csv2Pass.string();//pathをstringに変換 49 CsvFile2[i].open(s1);//読み込み 50 51 //読み込み失敗時 52 if (CsvFile2[i].fail()) 53 { 54 log<<"csvFile2 "<<i<<".csv open failed"<<endl; 55 } 56 } 57 58} 59 60 61 62
試したこと
ログでの確認やブレークポイントを張って処理の様子を確認していたのですが、読み込めないファイルの規則性もバラバラで
いまいち原因がつかめませんでした。
補足情報(FW/ツールのバージョンなど)
開発環境はVisualStudio2019です
回答1件
あなたの回答
tips
プレビュー