2009-09-28 3 views
1

ifstreams의 벡터를 만들고 조작하려면 어떻게해야합니까? 이 제외하고이 같은ifstreams의 벡터

뭔가가 작동하지 않습니다 당신은 std::vectorifstream의를 저장할 수 없습니다

vector<ifstream> Files(10, ifstream()); 
Files[0].open("File"); 

답변

3

가장 가까운 생각은 vector<shared_ptr<ifstream> >입니다. ifstream은 복사 가능하지 않으므로 벡터에 입력 할 수 없습니다.

+0

재미있는 tid-bit : C++ 0x에서는 스트림을 컨테이너에 넣을 수 있습니다. 왜냐하면 스트림을 컨테이너에 넣을 수 있기 때문입니다. 왜냐하면 그것들은 복사 - 구성 가능하지 않더라도 이동 가능할 것이기 때문입니다. –

+0

Jerry, 고마워, 나는이 용감한 새로운 세상을 더 자세히 살펴야한다는 것을 알고 있지만 계속 연기하고있다. (추신 : 나는 Fortran IV에서 시작했다. :) –

+0

'C++ 0x'에서 'x'의 10 진수 값이 부족할 경우, 연기하는 유일한 사람이 아니라고 생각한다. 해커 . ;) – Kylotan

9

, 당신이 그 (것)의 복사본을 만들 수 없기 때문에.

대신 포인터를 저장하여 비슷한 결과를 얻을 수 있습니다. 이 경우 포인터 컨테이너를 사용하여 해당 ifstream이 삭제되도록하는 것이 좋습니다.

+0

+1 : ... 상황을 알지 못해도 스마트 포인터가 실제로 필요한지 여부는 알 수 없습니다. 그것은 단지 일을 복잡하게 만들 수 있습니다. – Troubadour