比较字符数组 [ ] 与字符 *数组 [ ]
Comparing char array[ ] with char *array[ ]?
抱歉,如果标题中的术语不正确,但基本上我想将字符数组与包含字符串文字的字符*数组进行比较。基本上我有一个数组:
char temp[6];
cin.get();
cout << "Enter: ";
cin.getline(temp,6);
和:
char *compare[10] = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. "};
如何将用户输入到"temp"中的字符串与"比较"数组元素进行比较。如果用户输入:"-..." 它将输入的字符串与"比较"的每个元素进行比较,并检查它是否匹配?我尝试进行比较,但它总是给我一个错误,说" ISO C++禁止指针和整数 [-permissive]|">
您应该始终使用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';
}
}
如果您对上面的代码有很多疑问,您可能需要查看权威C++书籍指南和列表
您应该尽可能多地使用 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.
}
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符