好像ifstream*->open
如我所料不工作... 下面是代碼:(編譯與MAC OSX 10.7
使用-std=c++11
g++ 4.7
)C++ ifstream的指針打開的文件失敗
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main(int argc, char** argv)
{
string line;
vector<string> fname = {"a.txt","b.txt"};
vector<ifstream*> files (2, new ifstream);
files[0]->open(fname[0]);
getline(*files[0], line, '\n');
cerr<<"a.txt: "<<line<<endl;
//this one prints the first line of a.txt
line.clear();
files[1]->open(fname[1]);
getline(*files[1], line, '\n');
cerr<<"b.txt: "<<line<<endl;
//but this one fails to print any from b.txt
//actually, b.txt is not opened!
return 0;
}
任何一個可以告訴我這裏有什麼錯?
你意識到這些文件都沒有被正確關閉,因爲你正在存儲指向動態分配的流的指針,而不是在它們上調用'delete',對吧? –
你的意思是'ifstream-> open'而不是'ifstream * - > open'這意味着'ifstream'的兩個去引用指針(暗示)?問,而不是編輯得到答案。 –