#include <vector>
#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
int main()
{
vector<string> test;
test.push_back("yasir");
test.push_back("javed");
for(int i=0; i!=test.end();i++)
{
cout << test[i];
}
}
为什么这段代码会放弃错误?我无法确定错误的原因。 错误:操作员没有匹配!= ....
答案 0 :(得分:2)
首先,您试图将int
与向量的迭代器进行比较。
for(int i=0; i!=test.end();i++)
{
cout << test[i];
}
这里,test.end()
返回迭代器。没有重载的operator!=
可以将整数(int i = 0
)与迭代器(test.end()
)进行比较。
所以你的循环看起来应该更像:
for (std::vector<string>::iterator i = test.begin(); i != test.end(); i++)
{
cout << *i;
}
如果使用C ++ 11或更新版本,您可以将std::vector<string>::iterator
替换为auto
。
接下来,您加入<string.h>
,其中包含旧功能,例如:strlen
,strcpy
。同样,<cstring>
包含C风格的字符串。
如果您想使用operator<<
,那么如果您想写:cout <<
,则必须执行:#include <string>
。
答案 1 :(得分:0)
正如已经提到的,问题是,你试图在&#34;中间&#34;中比较一个整数和迭代器。你的声明。试试这个,从我的观点来看,它更直观
#include <vector>
#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
int main()
{
vector<string> test;
test.push_back("yasir");
test.push_back("javed");
for(int i=0; i<test.size();++i)
{
cout << test[i];
}
}