【问题标题】:How to debug what's wrong with this C++ class? [closed]如何调试这个 C++ 类有什么问题? [关闭]
【发布时间】:2017-02-20 21:00:50
【问题描述】:
#include<iostream>
using namespace std;
class emp
{
    public:
                int en;
                char name[10],des[10];
void get()
{
    cout<<"enter emp no.";
    cin>>en;
    cout<<"enter emp name";
    cin>>name;
    cout<<"enter designation";
    cin>>des;
}
};
class salary : public emp
{
public:
    float bp,hra,da,pf,np;
    void get1()
    {
    cout<<"enter basic pay";
    cin>>bp;
    cout<<"enter domestic allowance";
    cin>>da;
    cout<<"enter profit fund";
    cin>>pf;
    cout<<"enter human resource admittance";
    cin>>hra;
    }
    void calculate()
    {
        np=bp+da+hra-pf;
    }

    void display()
    {
        cout<<en<<"\t"<<name<<"\t"<<des<<"\t"<<da<<"\t"<<pf<<"\t"<<np<<"\n";

    }
    };

    int main()
    {
    salary s[10];
    int i,n;
    char ch;
    cout<<"enter the no. of employees";
    cin>>n;
    for(i=0;i<=n;i++)
    {
     s[i].get();
     s[i].get1();
     s[i].calculate();
    }
    cout<<"\n eno. \t ename \t des \t bp \t hra \t da \t pf \t np \n";
    for(i=0;i<=n;i++)
    {
     s[i].display();
    }
    return 0;
    } 

【问题讨论】:

  • 请描述您面临的具体问题
  • cin&gt;&gt;name[10]; => cin&gt;&gt;name; 同上des
  • 数组的名称是“name”和“des”。我建议访问the book list
  • 我在 CodeBlocks IDE 上写的,它在左边距显示“红色”标记,表示错误。(我不是经验丰富的程序员,请帮助)
  • 如果我的名字输入 15 个字母会怎样?

标签: c++ class int


【解决方案1】:

cin&gt;&gt;des[10]; 读取标准输入的一个(单个)字符,并尝试将其写入des[10]。不幸的是,您已将 des 定义为 10 个字符,因此只有 des[0]des[9] 是有效的,因此当它尝试写入 des[10] 时,您会得到未定义的行为。

我的猜测是你可能想要更多类似的东西:

cin.getline(des, 10);

这会尝试从cin 中读取最多10 个字符,并将它们写入des(并确保它是NUL 终止的)。

当然,这同样适用于name

完成此操作后,您可能想忘记以上所有内容,将namedes 定义为std::strings。然后你可以使用std::getline(std::cin, name);。有了这个,您不必指定最大尺寸;字符串将展开以容纳用户输入的内容。

【讨论】:

  • 要我写整个程序让你更好理解吗?
【解决方案2】:

使用 cin >> name 和 cin >> des 代替 name[10] 和 des[10]

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多