gpt4 book ai didi

c++ - strtok 函数出错

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:47 25 4
gpt4 key购买 nike

在我的代码中,当我使用解析函数时出现未处理的表达式错误

在我的 PopStack 函数中,这是删除 vector 最后一个元素的正确方法吗。

错误是:

Unhandled exception at 0x0f463b50 (msvcr100d.dll) in Boost_Test.exe: 0xC0000005: Access violation writing location 0x00345d49.


class Stack
{
public:
Stack() {GlobalIndex=0; };
std::vector<char*> v;
int GlobalIndex;
void AddStack(char* txt);
void Parse();
void PopStack();
void PrintStack();

};

void Stack::Parse()
{
char* tok;
tok = strtok(v[GlobalIndex-1], ";");

while(tok!=NULL)
{
cout<<"\nThe time value is = "<<tok<<endl;
tok = strtok(NULL, " ");
}
}




void Stack::AddStack(char* txt)
{

v.push_back(txt);
GlobalIndex++;

}


void Stack::PopStack()
{
v.pop_back();
GlobalIndex--;
}

void Stack::PrintStack()
{
std::cout<<v[GlobalIndex-1]<<endl;
}


int _tmain(int argc, _TCHAR* argv[])
{
int i;
Stack s;
s.AddStack("aaa;1.2");
s.AddStack("bbb;1.7;");
s.AddStack("ccc;2.2");
s.Parse(); // This gives a unhandled expression error
s.PopStack();
s.PrintStack();
return 0;
}

最佳答案

找到的 token 末尾,在您的例子中是“;”,被替换为 0。

这个写操作是在你传递的字符串文字上完成的:

s.AddStack("aaa;1.2");

但字面量不可写,基本上它是一个“const char *”,因此存在访问冲突。

关于c++ - strtok 函数出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32688317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com