繁体   English   中英

程序自行终止

[英]Program Terminates Itself

我正在尝试使用类在 C++ 中实现一个名为 HugeInteger 的新数据类型。 我遇到了一个问题,当我尝试创建新的 HugeInteger 时,我的程序在打印第一个数字时自行终止。 当我评论语句时,语句用户输入一个 HugeInteger 但显示数字的语句仍然存在,第一个数字未写入(数字的默认值为 0),第二个数字由用户填写。 我的尝试如下:

大整数.h

// HugeInteger class definition


#ifndef HUGEINT_H
#define HUGEINT_H

class HugeInteger
{
private:
    int arr[40] = {0};
    size_t len;
    
    
public:
    
    void Input();
    void Output();
    
};

#endif

大整数.cpp

#include "HugeInteger.h"
#include <iostream>
#include <sstream> // to fill arr


void HugeInteger::Input()
{
    std::string line;
    int i;
    std::getline(std::cin, line);
    
    for (size_t i = 0; i < line.length(); i++)
    {
        arr[i] = line[i] - '0';
    }
    len = line.length();
}

void HugeInteger::Output()
{
    int i = 0;
    while (i < len)
        std::cout << arr[i++];
}

主.cpp

#include <iostream>
#include "HugeInteger.h"

int main()
{
    HugeInteger hui = HugeInteger();
    //hui.Input(); // when this is commented, Output method does not work.
    hui.Output();
    HugeInteger hui2 = HugeInteger();
    hui2.Input();
    hui2.Output();
    return 0;
}

注意:我刚刚执行了另一个调试,我创建了另一个名为 getLen 的方法,以便我可以访问len属性。 但是,我将 Output 方法之前和之后的代码放在 main.cpp 中,但我看不到 len 的值,也没有这些毒物。 之后,我把arr属性设为public,想看里面的内容,也看不到。 我认为我的代码不起作用,在程序完成后,我只能以某种方式看到我输入的内容。 注意:我认为我没有遇到缓冲区溢出问题,因为我总是用 3 个 4 位数字调试我的程序,所以我的数组包含 3-4 个数字,而 rest 是 0。此外,我可能会放一个代码来处理这个问题。

调用Input()设置len成员的值。 没有调用,该成员未初始化,但仍由Output()使用。

只需将其初始化为 0,类似于您对数组所做的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM