Ответы пользователя по тегу C++
  • Где я ошибся в коде?

    @BLVCKP
    Возраст ничего не говорит о наличии знаний.
    Насчёт ошибки - std::vector<T> не имеет у себя функции поиска (find).
    Так же ещё одна ошибка - невозможно преобразовать тип std::vector<std::string>> в std::string, как это и было сделано тут - src = src.substr(begin, end - begin);.

    Предлагаю свой способ используя итераторы.
    И на будущее - лучше не вставлять значения просто так в код, а и использовать #define / enum..

    Чтобы напечатать саму строку, достаточно просто написать std::cout << str;.
    Насчёт паузы перед выходом программы - в С++ лучше забыть про conio.h, всё уже есть в библиотеке iostream. Достаточно просто написать - std::getchar(); , а так же, если пишете программу для ОС Windows, то можно использовать std::system("pause");.

    #define BEG_TAG_LEN 13
    #define END_TAG_LEN 14
    
    std::string str = "";
    bool found = false;
    size_t beg = 0;
    
    for (std::vector<std::string>::iterator it = src.begin(); it != src.end() && !found; ++it)
    {
    	if ((beg = it->find("<keyMaterial>")) != std::string::npos)
    	{
    		found = !found;
    		beg += BEG_TAG_LEN;
    		str = it->substr(beg, (it->length() - beg - END_TAG_LEN));
    	}
    }
    
    std::cout << str << std::endl << std::endl;
    Ответ написан
    Комментировать