2013-04-29 6 views
11

C++の同様の関数をstring.split(delimiter)に探しています。指定された区切り文字で切り取った文字列を返します。 。C++のjavaのstring.split( "")と似た関数

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

THERE良い答えはされましたが、著者はそれを削除しました。

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

。 –

+0

これを見てくださいhttp://stackoverflow.com/questions/7583090/split-function-for-c – jpfonsek

答えて

3

。その答えは、Javaとは何かを持っていることが予想されていないとして、 `[javaの]`タグを削除 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

私はそれを削除しませんでした。なぜなら、タイトルにはストローク(おそらくstrtokでなければならない)が気付かなかったからです。D – jakubinf

1

私は、この他のスタックオーバーフローの質問はこの質問に答えるかもしれないと思う。要するに

Split a string in C++?

を、そこにJavaの持つような組み込みの方法はませんが、ユーザーの一つは、これは非常に似て書きました方法:あなたはstrtokはを使用することができます

https://stackoverflow.com/a/236803/1739039

関連する問題