2013-02-22 9 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 :: बाइनरी); –

+4

बाइनरी फाइलों में व्हाइटस्पेस को छोड़ने के लिए noskipws flag => std :: noskipws (ifs1) सेट करना न भूलें, अन्यथा इटरेटर किसी भी सफेद जगह को छोड़ देगा और \ n और \ n छोड़ा जाएगा लेकिन फाइलें अभी भी अलग हैं। – ovanes

+0

ई 1 और ई 2 पुनरावृत्ति के अंत का संकेत दे रहे हैं। इटरेटर के प्रारंभ() और अंत() विधियों का उपयोग करना बेहतर नहीं होगा !? मैं इस तरह कुछ उपयोग कर रहा हूं (std :: vector के साथ): BOOST_CHECK_EQUAL_COLLECTIONS (b1.begin(), b1.end(), b2.begin(), b2.end()); – Christian

3

फ़ाइलों जैसे कुछ का उपयोग करेगा? दोनों पढ़ें और सामग्री की तुलना करें।

-1

मैं दो फ़ाइलों के हैश की तुलना करेंगे। हैश की गणना करने के लिए openssl लाइब्रेरी का उपयोग करने के उदाहरण बहुत हैं।

संबंधित मुद्दे