Я разбираю файл .xml по образовательным соображениям.Я знаю, что правильный и безопасный способ - использовать стороннюю библиотеку, но я хочу расширить свои знания в C ++, используя ее библиотеки и методы.
Я прочитал файл и загрузил его содержимое в строку,Я удалил пробелы, и теперь я пытаюсь зафиксировать значение между тегом low.Я использую метод .find (), чтобы сопоставить тег, а затем пытаюсь сохранить его в новой строке.Моя проблема в том, что мой код удаляет все перед первым совпадением, а также то, что начинается и заканчивается тегом, который я предоставляю.Есть ли способ, может быть, добавить в новую строку или вектор значение между тегом, используя мой подход?
Редактировать: я отредактировал код, включив в него все, что я написал.
Вот код, который я использую:
int main(){
std::ifstream inFile("demo.xml");
std::string contents;
bool found_tag = false;
std::cout << "line 17" << std::endl;
while (getline(inFile, contents))
{
std::string temp;
std::string low;
for (int i = 0; i < contents.length(); ++i)
{
if (contents[i] == ' ' && temp.size() == 0) {}
else
{
temp += contents[i];
}
}
unsigned int begin_tag = temp.find("<low>"); //when printed shows a random number or 0
unsigned int end_tag = temp.find("</low>"); // same as the above.
if (begin_tag != std::string::npos)
{
found_tag = true;
continue;
}
else if (end_tag != std::string::npos)
{
found_tag = false;
}
if (found_tag)
{
low += temp;
std::cout << low << std::endl;
}
return 0;
}
Вывод:
<high>200</high>
</interval>
<interval>
<high>400</high>
</interval>
<interval>
<high>700</high>
</interval>
<interval>
<high>800</high>
</interval>
</intervals>
</root>