c++ - 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
解决方案
为此,您必须使用 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。
推荐阅读
- javascript - 猫鼬'模型不是构造函数'错误
- html - Bootstrap 表单检查将复选框放在文本上
- python - 带有 C++ 的简单 SWIG 用于 python 编译,但输出似乎不正确?
- mongodb - 有没有办法通过该文档中的其他值过滤 MongoDB 文档?
- kong - Kong API 网关的最佳日志插件,可利用现有的 ELK 堆栈日志
- python-3.x - 是否有任何原因会使python多处理模块中的队列类冻结
- node.js - $PullAll 跨文档 - 猫鼬
- javascript - 阴影只持续一秒钟
- init - 如何在 Alpine Linux 上启动服务?
- r - 使用 rtweet 的 ts_plot() 绘制推文时时区不起作用