所以,我正在尝试编写一个返回 a 的函数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
把参数串起来":"
,然后用“”分隔符。在cout<<subStr
通话中,如果我注释掉从int i=0
到的所有内容,我会得到预期的结果fullVec.push_back(args)
。如果我不注释掉所有这些行,我只会得到第一行substring
(直到遇到第一个“:”),然后最大的 while 循环退出。
我的意思是预期的;让我们假设参数是“我的名字是:bon jovi:xxx ab”,如果所有内容都被注释掉,将打印以下行:
my name is
bon jovi
xxx ab
如果我保持原样,将会发生的只是
my name is
将打印,大循环将退出
任何帮助表示赞赏,谢谢!(是的,我知道这似乎是一个愚蠢的练习,可以更优雅/更轻松地完成......但是我希望在我使用字符串等娱乐之前让这个解决方案起作用。)