1
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <sstream>
#include <string>
#include <ParserDom.h>
using namespace std;

using namespace htmlcxx;

int main()
{

ifstream bucky;
string str="";
    bucky.open("C:\\tasks\\TEST2.txt");

if(!bucky.is_open()){
    exit(EXIT_FAILURE); 
}
char word[50];  
bucky >> word;
str.append(word);
str.append(" ");    
while(bucky.good())
{

    bucky >> word;
    str.append(word);
    str.append(" ");
     }

//cout<< word<<" "<<endl;
bucky >> word;
str.append(word);
str.append(" ");

HTML::ParserDom parser;
tree<HTML::Node> dom = parser.parseTree(str);
//Print whole DOM tree
cout << dom << endl;
 }

こんにちは、私は htmlcxx を使用しています。インストールし、そのヘッダー ファイルとライブラリをプロジェクトに含め、上記のようにコードを記述しました。しかし、次のエラーが発生しました:

c:\...\htmlcxx-0.84\html\parsersax.tcc(4): fatal error C1083: Cannot open include file: 'strings.h': No such file or directory

この問題を解決するのを手伝っていただけないでしょうか。**

4

1 に答える 1

1

strings.hUNIXヘッダーファイルだと思います。基本的に、文字列ライブラリには と の 2 つの異なるヘッダーがありstring.hますstrings.h。これらはわずかに異なるプロトタイプを定義します。コンパイル環境をテストするために、マクロを使用して適切なものを含める適切な方法があるはずです。何かのようなもの

#ifdef _WIN32
#include <string.h> 
#else
#include <strings.h>
#endif

どれが Windows の標準であるかはわかりません。これは単なる例です。サードパーティのコードを使用している場合、移植できない可能性があります。ヘッダーを見て、上記のようなコードを使用しているかどうかを確認する必要があります。

編集:この迅速で醜い修正を試してください:次を含むファイルstrings.hを作成してください:

extern "C" {
#include <string.h>
}

彼らが使用する機能に応じて、それはうまくいくかもしれません...

編集:

彼らはParserSax.tccでこの種のマクロを使用します:

#if !defined(WIN32) || defined(__MINGW32__)
#include <strings.h>
#endif

そのため、mingw のインストールに問題がある可能性があります。システムでこのファイルを手動で検索してみてください。

于 2013-03-20T00:28:10.980 に答える