Извлечение подстрок между двумя символами в C++: изучено несколько методов

В C++ существует несколько способов извлечения подстроки между двумя символами внутри заданной строки. В этой статье рассматриваются различные подходы к решению этой задачи и приводятся примеры кода для каждого метода. Независимо от того, являетесь ли вы новичком или опытным разработчиком C++, это руководство поможет вам понять и эффективно реализовать эти методы.

Методы:

Метод 1: использование функций find() и substr()

#include <iostream>
#include <string>
std::string getStringBetweenChars(const std::string& input, char startChar, char endChar)
{
    size_t startPos = input.find(startChar);
    size_t endPos = input.find(endChar);
    if (startPos != std::string::npos && endPos != std::string::npos && endPos > startPos + 1)
    {
        return input.substr(startPos + 1, endPos - startPos - 1);
    }
    return "";
}
int main()
{
    std::string input = "Hello [World]!";
    char startChar = '[';
    char endChar = ']';
    std::string result = getStringBetweenChars(input, startChar, endChar);
    std::cout << "Substring between " << startChar << " and " << endChar << ": " << result << std::endl;
    return 0;
}

Метод 2: использование регулярных выражений (регулярное выражение)

#include <iostream>
#include <string>
#include <regex>
std::string getStringBetweenChars(const std::string& input, char startChar, char endChar)
{
    std::regex pattern("\\" + std::string(1, startChar) + "(.*?)" + "\\" + std::string(1, endChar));
    std::smatch matches;
    if (std::regex_search(input, matches, pattern) && matches.size() > 1)
    {
        return matches[1].str();
    }
    return "";
}
int main()
{
    std::string input = "Hello [World]!";
    char startChar = '[';
    char endChar = ']';
    std::string result = getStringBetweenChars(input, startChar, endChar);
    std::cout << "Substring between " << startChar << " and " << endChar << ": " << result << std::endl;
    return 0;
}

Метод 3. Использование пользовательской функции

#include <iostream>
#include <string>
std::string getStringBetweenChars(const std::string& input, char startChar, char endChar)
{
    std::string result;
    bool insideSubstring = false;
    for (char c : input)
    {
        if (c == startChar)
        {
            insideSubstring = true;
            continue;
        }
        else if (c == endChar)
        {
            insideSubstring = false;
            break;
        }
        if (insideSubstring)
        {
            result += c;
        }
    }
    return result;
}
int main()
{
    std::string input = "Hello [World]!";
    char startChar = '[';
    char endChar = ']';
    std::string result = getStringBetweenChars(input, startChar, endChar);
    std::cout << "Substring between " << startChar << " and " << endChar << ": " << result << std::endl;
    return 0;
}

В этой статье мы рассмотрели три различных метода извлечения подстроки между двумя символами в C++. Первый метод использует функции find()и substr(), второй метод использует регулярные выражения, а третий метод реализует пользовательскую функцию. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать наиболее подходящий метод для вашего приложения.