2013-04-29 19 views
11

Tôi đang tìm hàm tương tự trong C++ tới string.split(delimiter). Nó trả về một chuỗi các chuỗi được cắt theo dấu phân tách được chỉ định. .Chức năng tương tự với chuỗi string.split ("") của java trong C++

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

Có một câu trả lời tốt nhưng tác giả đã xóa nó.

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

Xóa thẻ '[java]' làm câu trả lời sẽ không liên quan gì đến Java. –

+0

Hãy xem http://stackoverflow.com/questions/7583090/split-function-for-c – jpfonsek

Trả lời

3

Bạn có thể sử dụng strtok. 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

Tôi đã xóa nó vì tôi không nhận thấy NO STROK (có thể phải là strtok) trong tiêu đề: D – jakubinf

Các vấn đề liên quan