gpt4 book ai didi

c++ - 字符串相等时比较不相等

转载 作者:行者123 更新时间:2023-11-30 02:50:06 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来对 TSP 进行强力解决方案,作为其中的一部分,我需要根据目标名称找到图形边。 r->destcitytofind->name 都是 std::strings,实际上相等的都是使用相同的字符串从输入代码的另一部分。我的代码如下:

Edge findEdge(vector<Vertex>::iterator tofind){
for (vector<Edge>::iterator r = Edges.begin(); r < Edges.end(); r++){
cout << r->destcity << " " << tofind->name << " ";//This and the next
cout << ((r->destcity == tofind->name)?"True":"False") << endl; //line are for debugging
if (r->destcity == tofind->name)
return *r;
}
cerr << "Didn't find edge\n";
exit(200);
}

然而,尽管字符串相等,但它们永远不会比较相等。作为引用,这里是诊断 cout 输出:

New York New York False <- This should return true
Miami New York False
Seattle New York False

编辑:问题实际上不是程序的这一部分,其中一个字符串前面是不可打印的字符。由于这是一个 I/O 问题,如果我无法弄清楚为什么会这样,我会提出一个单独的问题。

最佳答案

不能 100% 确定这是唯一的问题,但您的迭代循环使用了错误的比较:

for (vector<Edge>::iterator r = Edges.begin(); r < Edges.end(); r++){

这行不通,因为迭代器不一定“按顺序”,即 Edges.end() 不一定比其中的所有其他元素“更大”。

这将是正确的循环:

for (vector<Edge>::iterator r = Edges.begin(); r != Edges.end(); r++){

注意这是使用运算符 != 循环,只要没有到达终点。

关于c++ - 字符串相等时比较不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711440/

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