В следующей первой строке кода я получаю эту ошибку: не могу преобразовать 'std :: string' в 'char *' для аргумента '1' в 'char * strtok (char *, const char *)'
void ToToken( ) {
TokenLine.reserve(30);
char * tmp;
TokenLine[0]= strtok (Line," ");
while(tmp!=NULL)
for(int i=0;i<TokenLine.size();i++){
TokenLine[i]= strtok(NULL," ");
if(TokenLine[i]==NULL||TokenLine[i]==" ")
TokenLine.erase(i);
cout<<Token[i];
}
}
Полный код:
class CombatLine{
string Line;
bool combat;
char LT[4];
time_t rawtime;
vector<string> TokenLine;
CombatLine(){
combat = false;
}
void SetLine(string S){
Line="[Combat] 03:33:05 -Anthrax- Roshi heals -Anthrax- Roshi for 2630 points of damage.";
}
bool isLineCombat(){
if(Line.substr(0,8)=="[Combat]")
return true;
else
return false;
}
bool StrFound(string SubString){
size_t tmp;
tmp = Line.find(SubString);
if(tmp!=string::npos)
return true;
else
return false;
}
void SetLT(){
LT[0]=Line.at(13);
LT[1]=Line.at(14);
LT[2]=Line.at(16);
LT[3]=Line.at(17);
}
char ReturnLT(int Index){
return LT[Index];
}
void SetType(){
if (this->StrFound("(dodge)"))
Event.SetType("dodge");
if (this->StrFound(" (parry) "))
Event.SetType("parry");
if(this->StrFound("misses"))//because we know its not a parry or dodge if we made it this far
Event.SetType("miss");
if(this->StrFound(" strikes through "))
Event.SetType("st");
if(this->StrFound("(evaded)"))
Event.SetType("evade");
if(this->StrFound("crits"))
Event.SetType("crit");
if(this->StrFound("hits"))
Event.SetType("hit");
if(this->StrFound("glances"))
Event.SetType("glance");
else
Event.SetType("not found");
}
void ToToken(){
TokenLine.reserve(30);
char * tmp;
TokenLine[0]= strtok (Line," ");
while(tmp!=NULL)
for(int i=0;i<TokenLine.size();i++){
TokenLine[i]= strtok(NULL," ");
if(TokenLine[i]==NULL||TokenLine[i]==" ")
TokenLine.erase(i);
cout<<Token[i];
}
}
string ReturnType(){
this->SetType();
return Event.ReturnType();
}
void SetMinMax(){
if(Event.ReturnType()=="miss"||Event.ReturnType()=="dodge"||Event.ReturnType()=="parry")
Event.SetMinMax(0,0);
}};
Я передаю неверную строку типа I в strtok.Я знаю, что я играю с C-строкой и & C ++ string без особого различия между ними.
Также является ли strtok статическим методом String.h?Что, если я хочу передать ему еще одну строку для токенизации?
Спасибо, Macaire Bell