gpt4 book ai didi

c++ - 在 Switch 案例中标记字符串

转载 作者:行者123 更新时间:2023-11-28 07:54:23 24 4
gpt4 key购买 nike

我正在基于分隔符(使用 Boost Tokenizer)对字符串进行标记,然后根据状态变量的值对标记进行处理。

我遇到的问题:其中一种情况需要进一步标记字符串。这会导致错误,因为在 case 中声明了 tok1 和 token 迭代器变量。我试过在开关外声明它们并在外壳内分配它们,但这不起作用。

有谁知道我可以如何进行这项工作,或者是否有更好的方法来进一步标记案例中的字符串?谢谢!

示例代码如下:

 boost::char_separator<char> sep(TOKEN_DELIMETER_NEWLINE);                  
boost::char_separator<char> sep2(TOKEN_DELIMETER_SPACE);
tokenizer tok(_text, sep);

while(lineToken!=tok.end())
{
switch(state)
{
case FIRST_STATE:

lineToken++;
tokenizer tok1(*lineToken, sep2);
tokenizer::iterator token=tok1.begin();

break;
// Other Cases follow...
}

}

最佳答案

在填补空白之后,我编译了以下内容:

std::string _text1 = "The rain,In Spain,Lies Mainly,On the plain";

boost::char_separator<char> sep(",");
boost::char_separator<char> sep2(" ");
boost::tokenizer<boost::char_separator<char>> tok(_text1,sep);
boost::tokenizer<boost::char_separator<char>>::iterator lineToken = tok.begin();
unsigned int state = 0;

while(lineToken!=tok.end())
{
switch(state)
{
case 0:
lineToken++;
boost::tokenizer<boost::char_separator<char>> tok1(*lineToken, sep2);
boost::tokenizer<boost::char_separator<char>>::iterator token=tok1.begin();

break;
// Other Cases follow...
}
}

这对我有用 - 它编译和标记化....请注意,我的示例与您的示例不同,因为迭代器的增量会在结束前导致崩溃,因为我没有进行任何检查... ..

也许您没有使用该模板或错过了它?

关于c++ - 在 Switch 案例中标记字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077903/

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