"Handling map of files in c++"은 아니요, 하나는 std::map<std::string, std::ofstream*>
을 사용해야하지만 이것은 new
및 delete
동작으로 이어지고 깔끔하지는 않습니다.std :: map을 사용하여 std :: ofstream을 처리 할 수 있습니까?
"Is std::ofstream movable? 예!" "std::map<>::insert using non-copyable objects and uniform initialization"이 (가) ofstream
std::map
을 (를) 사용하여 컬렉션을 처리 할 수 있습니까? 따라서 파일 스트림을 닫는 것에 대해 걱정할 필요가 없으며 메모리를 해제하기 위해 delete
을 걱정할 필요가 없습니다.
나는 std::map<std::string, std::ofstream>
을 사용하는 동안 생성, 쓰기 (쓰기) 및 닫기 만 수행 할 수 있습니다. 복사하지 마십시오.
"하나 filestreams 폐쇄에 대해 걱정하고 메모리를 해제하기 위해 삭제하지 않도록". 그게 스마트 포인터 (이동 의미론이 당신을 위해 작동하지 않거나 다형 스트림을 원한다면)입니다. –
하지만 ofstream 자체도이 작업을 수행합니다. 맵이 범위를 벗어나면 소멸자가 호출되어 모든 요소의 소멸자, 즉 오브 스트림의 소멸자를 다시 호출합니다. 그러면 모든 파일이 제대로 닫힙니다. – athos