向量和字符串C ++

时间:2017-05-24 09:34:51

标签: c++

#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];
    }
}

为什么这段代码会放弃错误?我无法确定错误的原因。 错误:操作员没有匹配!= ....

2 个答案:

答案 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>,其中包含旧功能,例如:strlenstrcpy。同样,<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];
        }
    }