9
A
답변
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);
}
3
파일 같은 것을 사용하는 것이? 둘 다 읽고 내용을 비교하십시오.
-1
나는 두 파일의 해시를 비교하는 것입니다. openssl 라이브러리를 사용하여 해시를 계산하는 예는 많습니다.
ForEveR 대답을 읽은 후 고마워, 나는 거의 그랬다. 하지만 바이너리 모드를 사용하여 파일을 엽니 다. std :: ifstream ifs1 ("data1.txt", std :: ios :: binary); –
noskipws flag => std :: noskipws (ifs1)를 설정하여 바이너리 파일에서 공백을 무시하는 것을 잊어 버리십시오. 그렇지 않으면 반복기가 공백을 건너 뛰고 \ n을 건너 뛰지 만 파일은 여전히 다릅니다. – ovanes
e1과 e2는 반복의 끝을 나타냅니다. iterator의 begin() 및 end() 메서드를 사용하는 것이 더 좋지 않습니까? 다음과 같이 사용하고 있습니다 (std :: vector). BOOST_CHECK_EQUAL_COLLECTIONS (b1.begin(), b1.end(), b2.begin(), b2.end()); –
Christian