People list
[Jane]
Female
31
...
の形でテキストファイルを読んでいると、各行のために、私はをループにしたいと含まれている行を見つけます「[...]」例えば 、[ジェーン]
私は
正規表現表現"(^ [\ W +] $)" を思い付きました
私はそれがregex101.comを使って動作することをテストしました。 しかし、私は自分のコードでそれを使用しようとすると、それは何にも合致しません。 は、ここに私のコードです:私はこのコードを実行すると
void Jane::JaneProfile() { // read each line, for each [title], add the next lines into its array std::smatch matches; for(int i = 0; i < m_numberOfLines; i++) { // #lines in text file std::regex pat ("(^\[\w+\]$)"); if(regex_search(m_lines.at(i), matches, pat)) { std::cout << "smatch " << matches.str(0) << std::endl; std::cout << "smatch.size() = " << matches.size() << std::endl; } else std::cout << "wth" << std::endl; } }
は、すべての行が他のループに行くと何も一致していない...私は答えをアップ検索
が、私がいることを見たとき、私は混乱しましたC++の場合は、二重バックスラッシュを使用してエスケープする代わりにバックスラッシュを1つ使用する必要があります...しかし、二重バックスラッシュを使用しても、私のコードではうまくいかない... どこが間違っていましたか?ところで
は、私が(デスクトップ)のQt 5.5.1(クラン6.1(アップル)、64ビット)に基づいてのQt Creatorを3.6.0を使用してい---編集----
std::regex pat (R"(^\[\\w+\]$)");
しかし、私は宣言されていない識別子 'R'
の使用するというエラーが出ます:
私はやってみました10
私は既に
#include <regex>
を持っていますが、別のものを含める必要はありますか?
たぶん、あなたは何をエスケープする必要はありませんので、C++ 11個の生リテラル文字列を使用する必要があります。 'std :: string str = R"(...) ";'これは 'td :: regex pat(R"(^ \ [\ w + \] $)) ");' –
Ah 、私はそれを試みたが、私はエラー ''宣言されていない識別子の使用 'R' ' - あなたはおそらくなぜ知っていますか? – Ceria
コンパイラのどのバージョンですか? –