2016-06-19 15 views
0

Ich versuche, eine Zeichenfolge wie folgt aufteilen:Split ein String ein String mit speziellen Formatierung in C++

"aaaaaaaa" \ 1 \ "bbbbbbbbb"

mit den Anführungszeichen enthalten, um zu erhalten, aaaaaaaa bbbbbbbbb.

Ich habe verschiedene Methoden gefunden, um die Aufteilung der Zeichenfolge zu erhalten, aber das Vorhandensein von Anführungszeichen und Schrägstrich verursacht viele Probleme.

Zum Beispiel, wenn ich string.find verwende kann ich nicht string.find ("\ 1 \");

weiß jemand, wie man mir hilft? danke

+0

Sie entkommen müssen '\\' 'im Code:' '\\' '. –

+0

Verwenden Sie einfach string.find ("1"); da \ "wird verwendet, um qoutes innerhalb einer Zeichenkette zu markieren, heißt es Escape-Sequenz-String. Denken Sie einfach an" wie nur "in einer Zeichenfolge! – meJustAndrew

Antwort

1
#include <iostream> 
#include <string> 
#include <regex> 

int main() 
{ 
    // build a test string and display it 
    auto str = std::string(R"text("aaaaaaaa"\1\"bbbbbbbbb")text"); 
    std::cout << "input : " << str << std::endl; 

    // build the regex to extract two quoted strings separated by "\1\" 

    std::regex re(R"regex("(.*?)"\\1\\"(.*?)")regex"); 
    std::smatch match; 

    // perform the match 
    if (std::regex_match(str, match, re)) 
    { 
     // print captured groups on success 
     std::cout << "matched : " << match[1] << " and " << match[2] << std::endl; 
    } 
} 

erwarteten Ergebnisse:

input : "aaaaaaaa"\1\"bbbbbbbbb" 
matched : aaaaaaaa and bbbbbbbbb 
+0

Vielen Dank, es funktioniert gut. –