2016-05-19 12 views
0

Ich habe versucht, nur "Apple" aus der Zeichenfolge darunter zu extrahieren dh. zwischen und "/". Gibt es eine Möglichkeit, die Zeichenfolge zwischen den Begrenzern zu extrahieren? Derzeit wird die gesamte Zeichenfolge nach dem "," extrahiert.C++ lesen Teile von Std auswählen :: Zeichenfolge

std::string test = "Hello World, Apple/Banana"; 

std::size_t found;     
found = test.find(","); 

std::string str3 = test.substr(found); 
std::cout << str3 << std::endl; 

Antwort

0

Ein Schritt nach dem anderen. Extrahiere zuerst den Teil nach dem Komma. Dann extrahiere den Teil vor dem folgenden Schrägstrich.

Alternativ kann substr() auch einen optionalen zweiten Parameter, die maximale Anzahl der zu extrahierenden Zeichen, verwenden, anstatt alles zu extrahieren, was von der Zeichenfolge noch übrig ist. Wenn Sie also berechnen, wie viele Zeichen Sie extrahieren möchten, können Sie dies auch in einem einzelnen substr()-Aufruf tun.

+1

'.find()' nimmt eine optionale Startposition ein. Sie können das verwenden, um die Position des Schrägstrichs nach dem Komma zu finden, dann subtrahieren Sie sie, um die Länge des Teilstrings zu erhalten. – Barmar

0

Der erste Teil ist, wo der Teilstring "Apple" beginnt. Sie können find() dafür verwenden. Es gibt die Position des ersten Zeichens der Teilzeichenfolge zurück. Sie können dann den Konstruktor std :: string verwenden, um die ursprüngliche Zeichenfolge mit Start und Stopp-Positionen zu übergeben.

Referenzen String find(), String constructor

std::string extractedString = std::string(test, test.find("Apple"), sizeof("Apple") - 1); 
0

können Sie das zweite Argument von substr verwenden, um die Länge des Extraktions

#include <string> 

using namespace std; 

int main(int argc, char * argv[]){ 
    string test = "Hello World, Apple/Banana"; 
    size_t f1 = test.find(','); 
    size_t f2 = test.find('/'); 
    string extracted = test.substr(f1, f2 - f1); 
} 

Dies wird Ausgang , Apple bei der Verwendung von VC2013 zu finden. Wenn Sie f1 in size_t f1 = test.find(',') + 2; ändern, wird Apple ausgegeben.

Verwandte Themen