c++ - 空终止符在比较时给字符串长度带来麻烦

标签 c++ string comparison

我正在尝试通过“==”运算符比较 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/

相关文章:

c++ - strncpy导致段错误c++

r - R中公式等价的灵活比较?

c++ - CreateDibSection 在磁盘上而不是物理内存上

c++ - 关于 C++ 中的结构化异常 (SEH),我应该了解什么?

c++ - 如何在 Visual Studio 2017 中为 C++ 安装 npgsql

string - 如何压缩字符串

c - 有没有一种简单的方法可以从 C 中的字符串数组创建字符串?

c# - 在音频文件中查找音频样本(频谱图已存在)

timer - AVR定时器编程: CTC mode vs. 正常模式

c++ - 非静态数据成员的无效使用