この問題の重要な点は、私がXcodeでプログラミングしていることです。与えられた量のテキストファイルをセンサーベクトルに読み込む関数を書いた。テキストファイルを取得するために、Pathsは私にファイル名を含むパスを与えてリストに格納する関数を書いた。テキストファイルには、タブで区切られ、後でExcelに保存されるデータが含まれています。問題は、名前にスペースが含まれていて、Macにファイル名のスペースに問題があることです。私はスペースを "\"で置き換えようとしました。これは、スペースがあるファイルをエコーしたときに、端末がスペースで行うことです。私はそれらから読むためにファイルを開くことができません。私はあなたの助けに感謝します。C++:名前にスペースを含む複数のファイルからの読み取り
パス機能:
void get_filelist(list<string>& list_in)
{
string full_path;
DIR *dir;
struct dirent *ent;
if((dir = opendir (dir_target.c_str()))!=NULL)
{
while((ent = readdir (dir)) != NULL)
{
if(strstr(ent->d_name, ".txt") && !strstr(ent->d_name, "Summary"))
{
full_path = dir_target;
full_path = full_path + ent->d_name;
list_in.push_back(full_path);
}
}
closedir(dir);
}
else{
printf("could not open directory");
perror("");
}
}
が今ここに背中を使用しないでください、私の3次元ベクトル
void fill_vector(list<string> list_in, data_vec& sensors)
{
ifstream myfile;
size_t found;
for(list<string>::iterator it = list_in.begin(); it!= list_in.end(); it++)
{
string tab = "";
vector<vector<string> > temp_matrix;
cout << *it << endl;
myfile.open(*it);
if(myfile.is_open())
{
vector<string> temp_row;
while(myfile.is_open())
{
getline(myfile, tab, '\t');
found = tab.find('\n');
if(found == string::npos) temp_row.push_back(tab);
else{
temp_row.push_back(tab.substr(0, found));
temp_matrix.push_back(temp_row);
temp_row.clear();
temp_row.push_back(tab.substr(found+1));
}
}
myfile.close();
}
else cout << "unable to open file" ;
sensors.push_back(temp_matrix);
}
}
パスに読み込まれているファイルの内容を表示できますか? –
Unix(OS Xの場合)上のスペースを含むファイルを処理する一般的な問題は、ファイル名を引用することです。私はこの例では何を意味するのか正確には分かりませんが、端末からファイルを出力するには、通常は 'cat"にいくつかのファイル名 "'を実行することをお勧めします。 –