2013-04-29 2 views
11

Я ищу аналогичную функцию в C++ до string.split(delimiter). Он возвращает массив строк, вырезанных указанным разделителем. ,Аналогичная функция для java string.split ("") в C++

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

был хороший ответ, но АВТОР УДАЛИТЬ ЕГО.

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

Удаление '[Java]' тег в качестве ответа не ожидается иметь ничего общего с Java. –

+0

Посмотрите это http://stackoverflow.com/questions/7583090/split-function-for-c – jpfonsek

ответ

3

Вы можете использовать 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

Я удалил его, потому что я не заметил NO STROK (который, вероятно, должен быть strtok) в заголовке: D – jakubinf

Смежные вопросы