如何获取两个其他声明字符串之间的字符串,例如:
String 1 = "[STRING1]"
String 2 = "[STRING2]"
来源:
"832h0ufhu0sdf4[STRING1]I need this text here[STRING2]afyh0fhdfosdfndsf"
如何获得"I need this text here"
?
答案 0 :(得分:7)
由于这是作业,只有线索:
index1
String1
index2
String2
index1+lengthOf(String1)
(包括)到index2
(独家)的子串是您所需要的
答案 1 :(得分:2)
对于std :: regex来说可能是个好例子,它是C ++ 11的一部分。
#include <iostream>
#include <string>
#include <regex>
int main()
{
using namespace std::string_literals;
auto start = "\\[STRING1\\]"s;
auto end = "\\[STRING2\\]"s;
std::regex base_regex(start + "(.*)" + end);
auto example = "832h0ufhu0sdf4[STRING1]I need this text here[STRING2]afyh0fhdfosdfndsf"s;
std::smatch base_match;
std::string matched;
if (std::regex_search(example, base_match, base_regex)) {
// The first sub_match is the whole string; the next
// sub_match is the first parenthesized expression.
if (base_match.size() == 2) {
matched = base_match[1].str();
}
}
std::cout << "example: \""<<example << "\"\n";
std::cout << "matched: \""<<matched << "\"\n";
}
打印:
example: "832h0ufhu0sdf4[STRING1]I need this text here[STRING2]afyh0fhdfosdfndsf"
matched: "I need this text here"
我所做的是创建一个程序,创建两个字符串,start和end,作为我的开始和结束匹配。然后我使用正则表达式字符串来查找它们,并匹配中间的任何内容(包括任何内容)。然后我使用regex_match查找表达式的匹配部分,并将匹配设置为匹配的字符串。
有关详细信息,请参阅http://en.cppreference.com/w/cpp/regex和http://en.cppreference.com/w/cpp/regex/regex_search
答案 2 :(得分:0)
使用strstr
http://www.cplusplus.com/reference/clibrary/cstring/strstr/,使用该函数,您将得到2个指针,现在您应该比较它们(如果指针1&lt; pointer2),如果是,请读取它们之间的所有chars
。< / p>