我对 C++ 中的 vector 感到困惑;这是我第一次使用它们。我制作了一个字符串 vector ,我正在尝试将该 vector 中的元素与一个字母进行比较。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/* Head ends here */
void displayPathtoPrincess(int n, vector <string> grid){
for(vector<string>::iterator it = grid.begin(); it != grid.end(); ++it) {
if(*it.strcompare('p') != 0)
cout << 'Princess found!';
}
}
/* Tail starts here */
int main() {
int m;
vector <string> grid;
cin >> m;
for(int i=0; i<m; i++) {
string s; cin >> s;
grid.push_back(s);
}
displayPathtoPrincess(m,grid);
return 0;
}
为什么这行不通?不会*它总是一个字符串类型吗?
这是我的错误:
error: 'std::vector >::iterator' has no member named 'strcompare'
最佳答案
首先,在这种情况下,.
比 *
绑定(bind)得更紧,所以这
*it.strcompare('p')
相当于
*(it.strcompare('p'))
所以你应该这样调用
it->methodName(args)
其次,你需要调用std::string
的方法,大概是 std::string::compare
.
请注意,如果您只想搜索等于"p"
的条目,那么您所要做的就是
auto it = std::find(grid.begin(), grid.end(), "p");
if (it != v.end()) std::cout << "Princess found!" << std::endl;
关于c++ - 将 vector 元素制作成字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972631/