BenRegex ifadesi ve çift ters eğik çizgi
People list
[Jane]
Female
31
...
şeklinde bir metin dosyasını okuyorum ve her hat için ben döngü istiyoruz ve içerdiği satırı bulun "[...]" Örneğin [Jane]
regex ifade
geldi"(^ [\ w +] $)"
ile regex101.com kullanarak çalıştığını test ettim. Ancak, bunu kodumda kullanmaya çalıştığımda, hiçbir şeyle eşleşmiyor. İşte benim kod: Bu kodu çalıştırdığınızda
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;
}
}
, tüm satırlar başka örgüsüne gidin ve hiçbir şey maçları ... Ben cevaplar için yukarı aradı
ama gördüğüm zaman karıştı C++ için çift ters eğik çizgi yerine bir ters eğik çizgi kullanmak zorundasınız ... Ama çift ters eğik çizgi kullandığımda bile kodumda işe yaramadı ... Nerede hata yaptım? Bu arada
, ben (Masaüstü) Qt 5.5.1 (Clang 6.1 (Elma), 64 bit) dayanarak Qt Creator 3.6.0 kullanıyorum--- Düzenleme ----
std::regex pat (R"(^\[\\w+\]$)");
Ama bildirilmemiş tanımlayıcı 'R'
aitkullanın söyleyerek bir hata alıyorum:
yaptığım çalıştı 10
Zaten #include <regex>
var, ancak başka bir şey eklemem gerekiyor mu?
Belki bir şey kaçmak için gerek kalmaz C++ 11 ham edebi dizeleri kullanmak gerekir. std :: string str = R "(...)"; 'td :: regex pat (R" ((^ \ [\ w + \] $)) "); –
Ah gibi bir şey olurdu Bunu denedim ama 'tanımlanamayan tanımlayıcı' R '' bir hata alıyorum - belki nedenini biliyor musun? – Ceria
Derleyicinin hangi sürümü var? –