gpt4 book ai didi

C++ 标记化字符串不可取消引用

转载 作者:行者123 更新时间:2023-11-28 08:06:29 26 4
gpt4 key购买 nike

我的代码出现“字符串不可取消引用”错误,该错误几乎是从互联网上的某个地方逐字复制的。该应用程序在 Release模式(VS 2010)下完美编译,但在 Debug模式下一直向我抛出错误。它应该在 * 处拆分字符串并将每个单词保存到一个 vector 中。有人有什么想法吗?它似乎真的不喜欢比较的 (string::npos != found) 部分。

string newString = "Something*NotCool";

size_t found = newString.find_first_of("+*-/%()");
size_t lastPos = 0;
//while (found != newString.length)
while (string::npos != found || string::npos != lastPos)
{
if (found >= newString.length()) break;
if (found == lastPos)
{
lastPos = found+1;
found = newString.find_first_of("+*-/()", found+1);
}
string temp (newString,lastPos,found);
temp.assign(newString, lastPos, found-lastPos);
strings.push_back(temp);
lastPos = found+1;
found = newString.find_first_of("+*-/()", found + 1);
}

非常感谢您的帮助!!!

最佳答案

您的代码在 VS2010 中没有为我产生任何错误。

由于您可以访问正则表达式(<regex> 库),另一种选择可能是:

std::string str = "Something*NotCool";
std::regex re("[^(\\*\\+%/\\-\\(\\))]+");
std::sregex_token_iterator begin(str.begin(), str.end(), re), end;
std::vector<std::string> tokens;
std::copy(begin, end, std::back_inserter(tokens));

关于C++ 标记化字符串不可取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200247/

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