我想寫一個程序來對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);
}
但是,字符串永遠不會相等,儘管相等。作爲參考,這裏的診斷COUT輸出:
New York New York False <- This should return true
Miami New York False
Seattle New York False
編輯:問題是不實際與計劃的一部分,其中一個字符串是由不可打印字符開頭。由於這是一個I/O問題,我會問一個單獨的問題,如果我無法弄清楚爲什麼會發生這種情況。
您可能需要查看兩個字符串以查看是否其中一個包含不可打印的字符。 –
字符串* std :: string *還是C樣式的char指針? – hyde
@hyde他們在問題中作爲'std :: string'給出,但如果它們不是這樣的話,那將解釋它們。 –