Я новичок в Codesynthesis, и мне интересно, как я могу сравнить строковые значения с последовательностью.
Например, у меня есть идентификатор сообщения "0x100", и я хочу проверить, находится ли он вОтправить последовательности.Если это так, я просто хочу получить имя сигнала в сообщении с идентификатором «0x100» (в данном случае: «один»), а не всю последовательность.
С моим кодом я могу получить всеИдентификаторы сообщений во всех последовательностях отправки, но я не знаю, как использовать их для сравнения со строковой переменной, соответственно, просто извлеките один элемент из последовательности и сохраните его в строковую переменную.
Как я могу это сделать?
Спасибо за вашу помощь!
Это XML:
<record>
<signals>
<Send name="Port1">
<Message id="0x100">
<Signal name="one"/>
</Message>
<Message id="0x101">
<Signal name="two"/>
<Signal name="three"/>
<Signal name="four"/>
</Message>
<Message id="0x102">
<Signal name="five"/>
</Message>
<Message id="0x103">
<Signal name="six"/>
</Message>
<Message id="0x104">
<Signal name="seven"/>
<Signal name="eight"/>
<Signal name="nine"/>
<Signal name="ten"/>
</Message>
<Message id="0x105">
<Signal name="eleven"/>
</Message>
</Send>
<Send name="Port2">
<Message id="0x106">
<Signal name="twelve"/>
</Message>
<Message id="0x107">
<Signal name="thirteen"/>
</Message>
<Message id="0x108">
<Signal name="fourteen"/>
</Message>
<Message id="0x109">
<Signal name="fifteen"/>
</Message>
<Message id="0x110">
<Signal name="sixteen"/>
</Message>
</Send>
</signals>
</record>
Вот как я читаю последовательности из XML:
string filename = "test.xml";
unique_ptr<record> h(record(filename));
signals::Send_sequence& s(h->signals().Send());
for (signals::Send_iterator i(s.begin()); i != s.end(); ++i)
{
Send::Message_sequence& s2(i->Message());
for (Send::Message_iterator j(s2.begin()); j != s2.end(); ++j)
{
Message& u(*j);
cout << u.id() << endl;
}
}