我正在尝试通过“==”运算符比较 2 个字符串。 当我打印字符串时,两者是相同的。
但是 1 的长度大了 1,我认为它是空终止符。
有什么办法可以在比较时忽略这个??
谢谢!!
City* Adjutancy::FromStringToCity(string cityName) const
{
for (list<City*>::const_iterator it=m_citiesList.begin();it!=m_citiesList.end();it++)
if ((*it)->GetCityName()==cityName) //this fails
return *it;
return NULL;
}
和
string GetCityName() const {return m_cityName;}
创作
private:
string m_cityName;
和
FromStringToCity(toAdd->GetCityOfBase());
和
string Base::GetCityOfBase() const
{
return m_baseCity;
}
和
private:
string m_baseCity;
这就是全部,顺便说一句,这适用于 Windows 中的 Visual Studio,但现在当我将它转移到 Linux Kate 时 - 这就是它失败的地方。
最佳答案
如果这些是引号或字符数组中的字符串文字,它们将不会进行比较,因为您比较的是指针地址,而不是字符串本身。如果它们是 std::string
,它应该可以正常工作。
如果它们都是 std::string 并且一个比另一个长,我们需要查看您如何分配值以检测问题。
编辑:阅读大量评论后,我相信您的额外字符不是空终止符而是换行符。您需要在阅读文件时将其剥离。
关于c++ - 空终止符在比较时给字符串长度带来麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765454/