Ich habe zwei Wörter und beide sind vom Typ std::string und es handelt sich um Unicode-Wörter. Sie sind gleich, das heißt, wenn ich sie in eine Datei schreibe, haben sie beide die gleiche Darstellung. Aber wenn ich word1.compare(word2) aufrufe, erhalte ich nicht das richtige Ergebnis. Warum sind sie nicht gleich? Oder sollte ich eine andere Funktion anstelle von compare verwenden, um zwei Unicode-Strings zu vergleichen? Dank
ifstream myfile;
string term = "";
myfile.open("homograph.txt");
istream_iterator i(myfile);
multiset s(i, istream_iterator());
for(multiset::const_iterator i = s.begin(); i != s.end(); i = s.upper_bound(*i))
{
term = *i;
}
pugi::xml_document doc;
std::ifstream stream("words0.xml");
pugi::xml_parse_result result = doc.load(stream);
pugi::xml_node words = doc.child("Words");
for (pugi::xml_node_iterator it = words.begin(); it != words.end(); ++it)
{
std::string wordValue = as_utf8(it->child("WORDVALUE").child_value());
if(!wordValue.compare(term))
{
o << wordValue << endl;
}
}
Das erste Wort ist "term" und das zweite Wort ist wordValue; Die Überlastfunktion von as_utf8() lautet:
std::string wordNet::as_utf8(const char* str)
{
return str;
}