【问题标题】:Equality comparison on the output of a wstring iterator not workingwstring迭代器输出的相等比较不起作用
【发布时间】:2013-05-27 02:35:28
【问题描述】:

我有一个包含 wstrings 的向量。我想看看其中一个字符串是否与变量中的字符串具有相同的内容:

std::wstring m_MyString;

void CheckExists() {
    std::vector< std::wstring > list = ...
    for (std::vector< std::wstring >::iterator it = list.begin(); it != list.end(); ++it) {
        if (*it == m_MyString) {
            ...
            break;
        }
    }
}

但是,*it == m_MyString 似乎没有进行字符串相等 - 当向量中有匹配的字符串时,它不会进入 if。我认为它正在做指针/地址相等。我如何让它做基本的字符串相等?

【问题讨论】:

  • 是什么让你相信它没有进行字符串相等比较?
  • 相等运算符应该可以正常工作,但您可以尝试使用compare。还要记住,比较是区分大小写的。
  • @juanchopanza 因为当迭代器有一个与变量中的字符串内容相同的字符串时,它不会进入if
  • @thecoop 你能告诉我们两个字符串的确切内容吗?
  • 还有:(#include &lt;algorithm&gt;) std::vector&lt; std::wstring &gt;::iterator it = std::find( list.begin(), list.end(), m_MyString ); if (it != list.end()) { ... }

标签: c++ string vector equality


【解决方案1】:

原来问题是变量中的字符串是以空值结尾的,而向量中的字符串不是。所以它们看起来一样,但实际上并不相同。

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多