很抱歉,如果标题中的术语不正确,但基本上我想将char数组与包含字符串文字的char *数组进行比较。 基本上我有一个数组:
char temp[6];
cin.get();
cout << "Enter: ";
cin.getline(temp,6);
和
char *compare[10] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
如何将用户输入的字符串与“compare”数组元素进行“temp”比较。例如,如果用户输入:“ - 。”,它将输入的字符串与“compare”的每个元素进行比较,并检查它是否匹配? 我试过做比较,但总是给我一个错误,说“ISO C ++禁止指针和整数之间的比较[-fpermissive] |”
答案 0 :(得分:1)
您应该始终使用STL的设施。这样你就可以改变这种喧嚣:
char temp[6]; cin.get(); cout << "Enter: "; cin.getline(temp,6); char *compare[10] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
为:
std::string temp;
std::cout << "Enter: ";
std::getline(std::cin, temp);
std::vector<std::string> compare = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
现在查找输入的字符串是否匹配:
auto iter = std::find(compare.begin(), compare.end(), temp);
if(iter != compare.end(){
// You have a match!
}
一个完整的例子:
#include <algorithm>
#include <iostream>
#include <vector>
int main(){
std::string temp;
std::cout << "Enter: ";
std::getline(std::cin, temp);
std::vector<std::string> compare = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
auto iter = std::find(compare.begin(), compare.end(), temp);
if(iter != compare.end(){
//To obtain index from an iterator
auto index = std::distance(iter, compare.end());
std::cout << "We found a match at: " << index << '\n';
}
}
如果您对上述代码有很多疑问,可能需要查看The Definitive C++ Book Guide and List
答案 1 :(得分:0)
您应尽可能使用STL功能。在您当前的情况下,请尝试使用std::string
代替char*
和std::vector
代替char* arr
。
您可以替换现有代码
char temp[6];
cin.get();
cout << "Enter: ";
cin.getline(temp,6);
char *compare[10] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
通过这个
std::string temp;
std::cout << "Enter: ";
std::getline(std::cin, temp);
std::vector<std::string> compare = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
现在你可以通过像
这样的比较向量进行迭代for(const auto& iter : compare) {
// Do the comparison to check whether it's a match or not.
}