2013-02-22 19 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フラグ=> std :: noskipws(ifs1)を設定することを忘れないでください。バイナリファイル内の空白のスキップを破棄してください。そうしないと、イテレータは空白をスキップし、\ tと\ 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

私は2つのファイルのハッシュを比較します。 opensslライブラリを使ってハッシュを計算する例はたくさんあります。

関連する問題