对不工作的wstring迭代器的输出进行相等比较

Equality comparison on the output of a wstring iterator not working

本文关键字:比较 迭代器 工作 wstring 输出      更新时间:2023-10-16

我有一个矢量持有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。我认为它在做指针/地址相等。如何让它实现基本的字符串相等?

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