我有一個名爲actions
有多個文件名,空格字符串,並且這些文件的名稱之間的換行,像這樣:ifstream的分段錯誤
File1 File2 File3 File4
File5 File6 File7 File8
我想逐一打開這些文件,所以我按空格分割字符串以分別獲取文件名。
std::stringstream ss(actions);
std::string newline;
while(std::getline(ss, newline, '\n')){
std::stringstream s1(newline);
std::string espacos;
std::getline(s1,espacos,' ');
char* file = &espacos[0u];
cout << file << '\n';
ifstream ficheiro;
ficheiro.open(file);
....
}
這是我分裂的地方。
字符串espacos
是通過逐個獲取文件名來遍歷換行符的字符串。
我從string
轉換爲char*
但最終我得到了分段錯誤。
我用了一個調試器,它說,這條線是造成分段錯誤:
ficheiro.open(file);
所以我打印char* file
檢查,如果一切正常,我也得到這樣的輸出:
File1
File2
File3
File4
由於文件名一切正常,我可以打開每個文件,但是File4
,你認爲是什麼原因導致了這個錯誤? PS:我在每個循環之後關閉文件。
請** [編輯] **用[MCVE]或[SSCCE(短的,獨立的,正確的示例)](HTTP你的問題:// SSCCE。org) – NathanOliver
該代碼僅在每行上獲得第一個名稱。必須有一些重要的缺失。 – molbdnilo
我忘記了它獲得每個名字的循環。 –