Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对象数组中的搜索操作?_C++_Class - Fatal编程技术网

C++ 对象数组中的搜索操作?

C++ 对象数组中的搜索操作?,c++,class,C++,Class,我正在制作简单的银行程序,我的班名是银行 它由以下函数组成:deposit(),draw(),show(),getname(),getbalance(),默认构造函数和参数构造函数 我正在尝试在主程序中按名称和余额进行搜索操作。 但是,它不是显示输入的相应姓名或余额的信息,而是显示账户持有人的完整信息列表 请帮助纠正此问题 #包括 #包括 班级银行 { 字符名称[20],acNo[20],类型OFAC[10]; 双平衡; 公众: 银行() { strcpy(名称,“空”); strcpy(ac

我正在制作简单的银行程序,我的班名是银行

它由以下函数组成:
deposit()
draw()
show()
getname()
getbalance()
,默认构造函数和参数构造函数

我正在尝试在主程序中按名称和余额进行搜索操作。 但是,它不是显示输入的相应姓名或余额的信息,而是显示账户持有人的完整信息列表

请帮助纠正此问题


#包括
#包括
班级银行
{
字符名称[20],acNo[20],类型OFAC[10];
双平衡;
公众:
银行()
{
strcpy(名称,“空”);
strcpy(acNo,“XXXX”);
strcpy(OFAC类型,“XXXX”);
余额=0;
}
银行(字符nm[20],字符acn[20],字符tac[10])
{
strcpy(名称,nm);
strcpy(acNo,acn);
strcpy(OFAC、tac类型);
余额=0;
}
double getbalance(){return balance;}
char*getname(){return name;}
无效输入();
无效存款();
无效撤回();
void show();
};
作废银行::存款()
{
双d;
库特;
库特
及


是每个代码的第一行,将它变成空if条件。第二行与<代码>无关,如果始终运行。这是为什么每次代码都要使用卷轴括号的原因之一,如果语句,即使它只有一行。

< P>你已经非常混杂C和C++。我已经做了纯C++类声明,像这个< /P>
class bank {
    string name, acNo, typeOfAc;
    double balance;
public:
    bank(string nm = "NULL", string acn = "XXXX", string tac = "XXXX")
        : name(nm), acNo(acn), typeOfAc(tac), balance(0) {}

    double getbalance() { return balance; }
    string getname() { return name; }
    . . .
};
这里,
string
std::string

而不是

char n[20];
fflush(stdin);
gets(n);    // unsafe
应该是

string n;
cin >> n;
而且,要更正您的搜索

if (b[i].getname() == n)    // no semicolon here
    b[i].show();

听起来你可能需要学习如何使用调试器来逐步完成你的代码。有了一个好的调试器,你可以逐行执行你的程序,看看它偏离了你的预期。如果你要做任何编程,这是一个必不可少的工具。进一步阅读:我还建议你使用
std::string
,而不是f c-strings.
if(strcmp(nn,n)==0);
结束if子句。无论条件的计算结果是什么,都将执行以下行。从该行中删除
。在
if(b[i].getbalance()==b1)中重复相同的错误
哦,刚才看到r sehu的评论,答案是一样的。最好用“简单的印刷错误”来结束这些问题。这些问题和对这些问题的任何回答对一般观众都没有用处。
char n[20];
fflush(stdin);
gets(n);    // unsafe
string n;
cin >> n;
if (b[i].getname() == n)    // no semicolon here
    b[i].show();