2013-04-29 7 views
11

Ich bin auf der Suche nach der ähnlichen Funktion in C++ zu string.split(delimiter). Es gibt ein Array von Zeichenketten durch das angegebene Trennzeichen geschnitten. .Ähnliche Funktion zu Java's string.split ("") in C++

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)

Es gab eine gute Antwort, aber Verfasser gelöscht IT.

vector<string> split(string str, string sep){ 
    char* cstr=const_cast<char*>(str.c_str()); 
    char* current; 
    vector<std::string> arr; 
    current=strtok(cstr,sep.c_str()); 
    while(current != NULL){ 
     arr.push_back(current); 
     current=strtok(NULL, sep.c_str()); 
    } 
    return arr; 
} 
+0

das '[java]' Tag als Antwort erwartet wird, nichts mit Java zu tun zu haben, zu entfernen. –

+0

Schauen Sie dies http://StackOverflow.com/Questions/7583090/split-Function-for-C – jpfonsek

Antwort

3

Sie können strtok verwenden. http://www.cplusplus.com/reference/cstring/strtok/

#include <string> 
#include <vector> 
#include <string.h> 
#include <stdio.h> 
std::vector<std::string> split(std::string str,std::string sep){ 
    char* cstr=const_cast<char*>(str.c_str()); 
    char* current; 
    std::vector<std::string> arr; 
    current=strtok(cstr,sep.c_str()); 
    while(current!=NULL){ 
     arr.push_back(current); 
     current=strtok(NULL,sep.c_str()); 
    } 
    return arr; 
} 
int main(){ 
    std::vector<std::string> arr; 
    arr=split("This--is--split","--"); 
    for(size_t i=0;i<arr.size();i++) 
     printf("%s\n",arr[i].c_str()); 
    return 0; 
} 
+0

Ich löschte es, weil ich nicht no STROK (die wahrscheinlich strtok sein muss) in Titel: D – jakubinf

Verwandte Themen