【发布时间】: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 <algorithm>)std::vector< std::wstring >::iterator it = std::find( list.begin(), list.end(), m_MyString ); if (it != list.end()) { ... }
标签: c++ string vector equality