В 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(), второй метод использует регулярные выражения, а третий метод реализует пользовательскую функцию. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать наиболее подходящий метод для вашего приложения.