【发布时间】:2021-02-20 16:49:35
【问题描述】:
我一直在尝试像这样搜索保存在 QVector 中的字符串的 id
QVector<QString> logMessages;
logMessages.append("1- Message");
logMessages.append("2- Message");
logMessages.append("3- Message");
logMessages.append("4- Message");
我尝试使用 find 但它对我不起作用,IDE 不显示任何错误消息,但在调试窗口中“迭代器显示”的值“不可访问”。
这是我迄今为止尝试过的,但对我不起作用。
QVector<QString>::iterator it = std::find(logMessages.begin(), logMessages.end(), "2");
if(it != logMessages.end())
{
int index = std::distance(logMessages.begin(), it);
}
【问题讨论】:
-
QVector
::iterator it = std::find(logMessages.begin(), logMessages.end(), "2- Message"); -
@OP 我倾向于将其作为拼写错误关闭,除非您确认您实际上是在尝试查找
"2"而不是"2- Message"。 -
@MohammadA.Dkman 这不是很清楚。 “迭代器不可访问”听起来像是编译器错误消息,但在上面你说它是一个“返回值”。你到底是什么意思?描述问题时尽量准确。
-
@MohammadA.Dkman 好的,这有帮助。哪一行代码在调试器中触发了该消息?
-
您可以尝试
std::find_if,它可以让您指定更复杂的条件来查找某些内容,或者您可以只编写一个 for 循环和一个 if 语句。如果您是初学者,后者更简单。