私はC++プログラミングの新人です。 ----入力::「名前:$$あなたName2はを入力し$$」 私はシンボルを含むシンボル$$間の文字列を抽出したい: ----出力私は、文字列を持っているいくつかの助け、C++同じシンボル間で部分文字列を抽出する方法
が必要: "$$あなたの名前2 $$を入力してください"
私を助けてください。
私はC++プログラミングの新人です。 ----入力::「名前:$$あなたName2はを入力し$$」 私はシンボルを含むシンボル$$間の文字列を抽出したい: ----出力私は、文字列を持っているいくつかの助け、C++同じシンボル間で部分文字列を抽出する方法
が必要: "$$あなたの名前2 $$を入力してください"
私を助けてください。
Regular Expressionは、この場合に非常に便利です。
C++ 11は、regexライブラリーを有する。
#include <string>
#include <regex>
std::string parse_string(const std::string& str) {
static const std::string REGEX_STR = R"__(\$\$(\w|\W)*\$\$)__";
std::regex regex(REGEX_STR);
std::smatch regex_iterator;
if (std::regex_search(str, regex_iterator, regex)) {
return regex_iterator.str();
}
return std::string("");
}
コードを改善することはできますが、それは良い出発点であるはずです。具体的なケースは、例えば、処理する必要があります:文字列で$$*$$
より、等...
注:
R"__(\$\$(\w|\W)*\$\$)__";
をより読み正規表現を作るためにraw stringです。
ただ、区切りの文字列を検索します。
std::string parse_string(const std::string& str, const std::string& delim) {
auto start = str.find(delim);
if (start == std::string::npos)
return "";
auto end = str.find(delim, start + delim.size());
if (end == std::string::npos)
return str.substr(start);
else
return str.substr(start, end - start + delim.size);
}
はStackOverflowのへようこそ。あなたがすでに持っているコードを表示し、そのコードでまだ解決できない問題が何かを説明してください。 – Christophe
[標準正規表現ライブラリ](http://en.cppreference.com/w/cpp/regex)が便利かもしれません。 –