私は.slnファイルを持っており、データを取得する必要があります。 .slnファイルはthatのように見えます。このファイルからプロジェクトの名前が必要です。また、正しく見える場合、私は撮影文字列で動作するコードを持っています。だから私は正規表現を作ろうとしましたC++の正規表現が正しくありません
"プロジェクト\ + \ "([\ W \] * vcxproj。)\" [\ S] + \ "({[W \ - ] +})\"」
#include <iostream>
#include <string>
#include <vector>
#include <regex>
#include <fstream>
using namespace std;
int main()
{
ifstream ifstr("C:\\Users\\Andrew\\Documents\\Visual Studio 2015\\Projects\\ConsoleApplication1\\ConsoleApplication1.sln");
string all;
//Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doctor", "dreryk\src\doctor\doctor.vcproj", "{5D031DBA-1903-4067-A2CE-01B104A08D48}"
regex projParse("Project\(\"\{[\w-]+\}\"\)\s*=\s*\"(\w+)\"[,\s]+\"([\w\\]*\.vcxproj)\"[,\s]+\"(\{[\w-]+\})\"");
ifstr.seekg(0);
string pth, sol;
match_results<string::const_iterator> what;
while (getline(ifstr, sol))
{
string::const_iterator start = sol.begin();
string::const_iterator end = sol.end();
if (regex_search(start, end, what, projParse))
{
cout << what[0] << endl;
}
}
}
私はこのコードをしようとしますそれは間違いがあると言います。私はそれをどのように修正するか分かりません。
エラーがあります。Microsoft C++の例外:メモリ位置0x0031E890でのstd :: regex_error ConsoleApplication1.exeで0x775EC42Dで
未処理の例外。
実際は何ですかあなたが得るエラー? – NathanOliver
正規表現の文字列リテラルのスラッシュをエスケープします。 –
どうすればそれらをエスケープできますか? – koshachok