#c #compiler-errors
#c #ошибки компилятора
Вопрос:
я пытаюсь использовать htmlcxx для синтаксического анализа веб-страницы. Проблема в том, что пример не поддается компиляции atm.
tree<HTML::Node>::iterator it = dom.begin();
tree<HTML::Node>::iterator end = dom.end();
for (; it != end; it)
{
if (it->tagName() == "A")
{
it->parseAttributes();
std::cout << it->attributes("href");
std::cout<< std::endl;
}
}
проблема заключается it->attributes("href");
остальное работает нормально. но с этой строкой я получаю
ошибка: нет соответствующей функции для вызова
'htmlcxx::HTML::Node::attributes(const char [5])'
/usr/local/include/htmlcxx/html/Node.h:51: примечание: кандидатами являются:
const std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >amp; htmlcxx::HTML::Node::attributes() const
У кого-нибудь есть идея?
Ответ №1:
Я только что взглянул на исходный код. Нужная вам функция является attribute
, а не attributes
:
// attribute takes a string
std::pair<bool, std::string> attribute(const std::string amp;attr) const { ... }
// attributes takes nothing
const std::map<std::string, std::string>amp; attributes() const { return this->mAttributes; }
Ответ №2:
Похоже, что attributes
функция не принимает имя атрибута в качестве параметра, а вместо этого возвращает все атрибуты в map. Вы должны прочитать документацию библиотеки, чтобы подтвердить это.
Ответ №3:
У меня была та же проблема. Для получения дополнительной информации об использовании htmlcxx я нашел эти страницы полезными (поскольку htmlcxx использует этот класс tree):