Просто используйте метод node.itertext()
, как в:
''.join(node.itertext())
Если вы сравните words[0]
и words[3]
, вы увидите, что они не совпадают. Это потому, что они являются указателями, поэтому операторы ==
, <
и т. Д. Будут искать адреса ваших строк C, а не их содержимое.
Так как их содержание одинаково, это возможно возможно & mdash; но не гарантировано & mdash; что их адреса тоже будут одинаковыми (это факт жизни со строковыми литералами). В вашем случае они не одинаковы, поэтому ключи логически различны, и оба элемента принимаются.
Указатели не являются контейнерами.
Вы можете заставить карту использовать strcmp
вместо , предоставив пользовательский компаратор, или вы можете просто использовать std::string
(или std::string_view
) для своих клавиш. :)