2013-02-22 3 views

답변

9

BOOST_CHECK_EQUAL_COLLECTIONS을 사용하여 파일 내용을 비교할 수 있습니다.

코드 샘플 :

#define BOOST_TEST_MAIN 
#include <boost/test/unit_test.hpp> 

#include <fstream> 
#include <iterator> 

BOOST_AUTO_TEST_CASE(test) 
{ 
    std::ifstream ifs1("data1.txt"); 
    std::ifstream ifs2("data2.txt"); 

    std::istream_iterator<char> b1(ifs1), e1; 
    std::istream_iterator<char> b2(ifs2), e2; 

    BOOST_CHECK_EQUAL_COLLECTIONS(b1, e1, b2, e2); 
} 
+2

ForEveR 대답을 읽은 후 고마워, 나는 거의 그랬다. 하지만 바이너리 모드를 사용하여 파일을 엽니 다. std :: ifstream ifs1 ("data1.txt", std :: ios :: binary); –

+4

noskipws flag => std :: noskipws (ifs1)를 설정하여 바이너리 파일에서 공백을 무시하는 것을 잊어 버리십시오. 그렇지 않으면 반복기가 공백을 건너 뛰고 \ n을 건너 뛰지 만 파일은 여전히 ​​다릅니다. – ovanes

+0

e1과 e2는 반복의 끝을 나타냅니다. iterator의 begin() 및 end() 메서드를 사용하는 것이 더 좋지 않습니까? 다음과 같이 사용하고 있습니다 (std :: vector ). BOOST_CHECK_EQUAL_COLLECTIONS (b1.begin(), b1.end(), b2.begin(), b2.end()); – Christian

3

파일 같은 것을 사용하는 것이? 둘 다 읽고 내용을 비교하십시오.

-1

나는 두 파일의 해시를 비교하는 것입니다. openssl 라이브러리를 사용하여 해시를 계산하는 예는 많습니다.

관련 문제