2014-09-25 5 views
0

임시 파일을 만들고 일부 데이터로 채우고 그 결과를 std::istreams 만 허용하는 함수로 보내야합니다.C에서 임시 파일 만들기

나는 tmpfile()를 사용하여 시도하고 내 첫 번째 요구 사항 작동 - '파일을 생성하고 일부 데이터로 채우기',하지만이 FILE*를 반환하고 (내가 아는 한) std::streams로 변환하는 방법은 없습니다 .

임시 파일을 만드는 C++ 방법이 있습니까? 이것이 가능하지 않은 경우 tmpnam이 유효한 파일 이름을 반환하는 것이 얼마나 신뢰할 수 있습니까? Android 또는 iOS에서이 기능을 테스트 한 사람이 있습니까?

편집 : 내 테스트의 일부로 데이터를 std::stringstream으로 복사하고 싶지 않습니다. 디스크에서 데이터를 읽는 중입니다.

+1

"결과를 std :: istreams 만 허용하는 함수로 보냅니다. *"파일이 아니지만 istringstream을 알고 있습니까? – deviantfan

+0

데이터를 복사하고 싶지 않습니다. 내 테스트의 일부가 디스크에서 읽는 중입니다 ... – Felics

+0

'tmpnam'이 당신이 원하는대로하지 않을 것이라고 생각하는 특별한 이유가 있습니까? –

답변

1

std::tmpfile 또는 std::tmpnam으로 대체하려면 Boost Filesystem 라이브러리를 참조하십시오. 디렉토리, 파일 등을 넣을 장소를 제공하는 unique_path() 함수를 포함합니다.

또한 디렉토리의 파일을 반복하는 것과 같이 표준 라이브러리에는없는 다른 파일 시스템 조작 기능이 포함되어 있습니다. 나는 이것들이 단위 테스트에 특히 유용하다는 것을 발견했다.

관련 문제