C++ 相等时比较不相等的字符串

C++ 相等时比较不相等的字符串,c++,C++,我正在尝试编写一个程序来对TSP执行暴力解决方案,作为其中的一部分,我需要根据目标名称找到一个图边r->destcity和tofind->name都是std::strings,实际上,使用代码另一部分中输入的相同字符串分配相等的字符串。我的代码如下: Edge findEdge(vector<Vertex>::iterator tofind){ for (vector<Edge>::iterator r = Edges.begin(); r < Edges.

我正在尝试编写一个程序来对TSP执行暴力解决方案,作为其中的一部分,我需要根据目标名称找到一个图边
r->destcity
tofind->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);
}
Edge findEdge(向量::迭代器tofind){
对于(向量::迭代器r=Edges.begin();rcerr不是100%确定这是唯一的问题,但是您的迭代循环使用了错误的比较:

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

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

您可能需要查看两个字符串中是否有一个包含不可打印字符。字符串是std::string还是C样式的字符指针?@hyde问题中给出了它们作为
std::string
,但如果它们不可打印,这将解释问题t、 这就是调试器可以派上用场的地方。Mark是正确的,因为某些原因,当我试图逐字打印时,r->name前面有3个不可打印的字符。谢谢你的提示,我认为可能是这样,但还没有遇到任何问题。我会继续在程序中更改它。使用
你确定不可以吗他的向量迭代器是随机访问迭代器,所以它们应该支持for (vector<Edge>::iterator r = Edges.begin(); r < Edges.end(); r++){
for (vector<Edge>::iterator r = Edges.begin(); r != Edges.end(); r++){