对不工作的wstring迭代器的输出进行相等比较
Equality comparison on the output of a wstring iterator not working
我有一个矢量持有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
。我认为它在做指针/地址相等。如何让它实现基本的字符串相等?
原来问题是变量中的字符串是空终止的,而向量中的字符串不是。所以它们看起来一样,但实际上并不一样。
相关文章:
- C++值初始化矢量迭代器比较
- 如何从目录迭代器中选择特定文件并进行比较
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 使用迭代器的自定义比较器函数
- 提升堆元素句柄比较和 MSVC 迭代器调试工具
- 输入迭代器的相等性比较
- 空列表迭代器比较始终为真
- 自定义迭代器:如果 a 和 b 的行为不同,如何正确处理距离计算和相等比较
- 在这种情况下,可以比较无效的迭代器
- 在将迭代器与C 中的null进行比较时,编译误差
- 如何将迭代器传递到std :: lower_bound()比较函数
- 迭代器比较STL
- C++:为什么输出迭代器不支持比较操作?
- 比较迭代器和const_iterator
- 比较迭代器value_type范围构造函数
- 比较迭代器时的怪异(?)行为
- c++速度比较迭代器与索引
- 模板比较迭代器
- 比较迭代器,c++
- C++为什么我们不能使用 > 和 < 来比较迭代器?