2016-09-04 15 views
-4

私はC++プログラミングの新人です。 ----入力::「名前:$$あなたName2はを入力し$$」 私はシンボルを含むシンボル$$間の文字列を抽出したい: ----出力私は、文字列を持っているいくつかの助け、C++同じシンボル間で部分文字列を抽出する方法

が必要: "$$あなたの名前2 $$を入力してください"

私を助けてください。

+1

はStackOverflowのへようこそ。あなたがすでに持っているコードを表示し、そのコードでまだ解決できない問題が何かを説明してください。 – Christophe

+2

[標準正規表現ライブラリ](http://en.cppreference.com/w/cpp/regex)が便利かもしれません。 –

答えて

-1

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です。

-1

ただ、区切りの文字列を検索します。

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); 
} 
関連する問題