だから、私はそのようにを返す関数を書こうとしていますvector<char**>
:
vector<char**> test(string mystr) {
char*temp=new char[mystr.size()+1];
strcpy(temp,mystr.c_str());
char*subStr=strtok(temp,":");
while(subStr!=NULL) {
int i=0;
char**args=new char*[200];
char*tempsta=newchar[strlen(subStr)+1];
strcpy(tempsta, subStr);
args[i]=strtok(tempsta," ");
while(args[i]!=NULL) {
i++;
args[i]=strtok(NULL," ");
}
fullVec.push_back(args);
//cout<<subStr<<endl;
subStr=strtok(NULL,":");
}
return fullVec;
}
だから私split
はパラメータ文字列を":"
delimeterで、次に""delimeterで上げたい。電話で、からまでcout<<subStr
すべてをコメントアウトすると、期待どおりの結果が得られます。これらの行をすべてコメントアウトしないと、最初の行(最初の「:」が検出されるまで)のみが取得され、次に最大のwhileループが終了します。int i=0
fullVec.push_back(args)
substring
期待されていることのために私は意味します。パラメータが「私の名前は:bon jovi:xxx ab」であると仮定します。すべてがコメント化されている場合、次の行が出力されます。
my name is
bon jovi
xxx ab
そのままにしておくとどうなるか
my name is
印刷され、大きなループが終了します
どんな援助もありがたいです、ありがとう!(はい、これははるかにエレガント/簡単に実行できるばかげた演習のように見えることを認識しています...ただし、文字列などを使用して楽しむ前に、このソリューションを機能させたいと思います)