• 全部
  • 问答

关于字符串的 == 和vector 的find函数。

maowu 2005-01-23 09:41:16
我期望在一个vector中查找一个字符串。vector的元素是从文件读进来的语句。(windows)
rule是一个string。MFC的文本框中用CString读进来的。

我知道文件中有根rule一样的一行的。但不知道为什么,总是找不到。

//如果能找到。
if (std::find(myVector.begin(), myVector.end(), rule) != myVector.end())

总是返回false。

我后来就一个个循环,从vector中一个个比较,还是不行:
bool have = false;

while(c_iter != c_iter_end)
{
if (rule == *c_iter)//我调试的时候看到明明他们一样,还是进不去if里面。
{
have = true;
break;
}
c_iter++;
}


===============
附上从文本框读进来的代码:
CString rule;
edit = (CEdit*)GetDlgItem(IDC_RULE);

edit->GetWindowText(rule);

editor.rule = rule;
...全文
868 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
maowu 2005-01-24
sorry啊各位兄弟,是我的疏忽。你们的建议都是可行的。
回复
lw1a2 2005-01-24
楼主的问题不是解决了,结贴了吗,怎么帖子还在?
回复
whoho 2005-01-24
虽然CString 不同于 string
但是CString定义了向const char*的类型转换,所以CString是可以直接赋值给string的
回复
hanhai118 2005-01-24
你的CString 和string之间没有类型的转换阿 竟然没有提示错误吗

两个不同的类怎么能直接赋值呢?
回复
Henry0 2005-01-24
楼主,你的rule 是CString的吧,和string类型不能直接比较哟

string temp_rule = rule.GetBuffer(0);

if (std::find(myVector.begin(), myVector.end(), temp_rule) != myVector.end())
回复
pengzhenwanli 2005-01-24
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
vector<string> vec;
vec.push_back("12345");
vec.push_back("12345");
string rule("12345");
vector<string>::iterator iter;
iter = vec.begin();

for(;iter<vec.end();iter++)
{
if(*iter==rule)
{
cout << "equal" << endl;
}
}

}

这个程序没有问题啊。你看一下。输出两个equal.
没错啊
回复
maowu 2005-01-23
忘了说,editor.rule 不是CString,是std::string。
vector也是std的vector。



再附上把字符串读到vector的代码:
ifstream in(inputFileName);
ofstream out("D:\\xxxx");

string s;

while(getline(in, s))
{
myVector.push_back(s);
=================================================



“使用clib的strcmp来比较看看哪儿不同。”
能不能给个例子?我是c++新手。。

======================================================
回复
pengzhenwanli 2005-01-23
字符串好像没有这么比较的吧?
再说了。这个rule应该使CString类型的。
你至少应该转换成相同的类型吧。
这个等于运算符可能没有重载。
你可以写一个比较的adapter
回复
xiaolizi 2005-01-23
if (rule == *c_iter)这航代码应该是不会错的,你的vector是什么的容器?实在不行,使用clib的strcmp来比较看看哪儿不同。
回复
发帖
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2005-01-23 09:41
社区公告
暂无公告