首页 > 解决方案 > c ++在字符串向量中搜索字符串

问题描述

我正在做一个项目来阅读上下文无关语法并表示它1.Vectorial,2.分支链表,3.数组(表)。我遇到了字符串比较的问题。当我从键盘读取代表生产规则右侧的字符串时,我想检查该字符串是否存在于字符串向量中。问题是比较不正常。如果我比较的字符串是字符串向量中的第一个字符串,则比较工作正常。但是,如果我比较的字符串是来自字符串向量的字符串,而不是第一次比较不起作用,就好像该字符串不是来自字符串向量。对不起我的英语不好。我最好让代码解释一下

bool is(string &s, vector<string> &v) {
    for (auto i : v) {
        return (i.compare(s)==0) ? true : false;
    }
}

此函数仅在 s=v[0] 时返回 true,否则即使 s=v[2] 也返回 false

标签: c++stringvector

解决方案


为此,您必须使用 for 循环进入向量并比较其中的每个字符串,它类似于:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

bool doExists(string s, vector<string> v) {
    for (int i=0;i<v.size();i++) {
        if (s.compare(v[i]) == 0) {
            return true;
        }
    }
    return false;
}

int main(){
    vector<string> phrases = {"Hello!", "I like potatos!","I like fries.","How are you today?","I'm good.","Hello!"};
    int helloLocated = doExists("Hello!", phrases);
    cout << helloLocated;
}

控制台将打印 1。


推荐阅读