我已经尝试了一切,但代码不起作用,因为我是这个领域的新手,所以我没有逻辑
Here's the assignment description
这里是代码:
#include <iostream>
#include <string>
int main()
{
char* Array2D[3][2] = {{"Bushra","0000-555555"},{"Ahad","0000-555544"},{"Mehwish","042-5558585"}};
char* name;
std::cout << "Enter name to find number in the directory";
std::cout << "\n" << "\n";
std::cin >> name;
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 2; ++j)
{
std::cout<< "Array[" << i << "][" << j << "] = " << Array2D[i][j] << "\n";
std::cout<< "\n";
if(name == Array2D[i])
{
std::cout << Array2D[j];
}
else
{
std::cout << "NO RECORD";
}
}
}
}
答案 0 :(得分:0)
您无法将operator==
与C-Style字符串一起使用
您必须使用strcmp()
。
如果您使用std::string
,则可以使用operator==
。
编辑1 :
问题是==
运算符正在比较指针而不是指针指向的。
答案 1 :(得分:0)
现在已修改为使用二维数组。
这就是我在C ++中使用现代编译器的方法
你的任务可能会有所不同。
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using std::string;
using std::vector;
using std::cout;
using std::cin;
int main(void) {
string phoneBook[3][2] = { { "Jenni", "867-5309" },
{ "Police", "911-911" },
{ "Operator", "123456" } };
string searchName;
cout << "Enter Name to find a number" << std::endl;
cin >> searchName;
auto t = std::find_if(phoneBook, phoneBook+3, [&](auto& r){return r[0] == searchName;} );
cout << ((t == phoneBook+3)? "No Such Name Found" : (*t)[1]);
return 0;
}