C ++运行失败:退出值2 - 我的代码出了什么问题?

时间:2015-04-02 12:37:13

标签: c++

我正在编写一个程序,将罗马数字转换为阿拉伯数字,反之亦然,当我执行下面的代码时,我的输出就会跳闸。 (运行失败:退出值2)。

用户输入一个字符串值,代码确保数字为大写,然后尝试在单位数组中找到它并将其索引值传递给arabic的值。我是C ++的新手,所以任何输入都值得赞赏。我相信for / if循环是我的问题,但我不知道如何修复它?

//roman to arabic
    int toArabic() {
        transform(input.begin(), input.end(), input.begin(), ::toupper);
        for (int i = 0; i < sizeof(units); i++) {
            if (input == units[i]) {
                arabic = i;
            }
        }
        cout << arabic << endl;
        }

//主要课程

int main(int argc, char** argv) {

while (!cin.eof()) {
    getline(cin, input);
    if (isdigit(input[0])) {
       toRoman();
       input.clear();
       roman.clear();
    }
    else if (isalpha(input[0])) {
        toArabic();
        input.clear();
    }
    else {
        return 0;
    }
    }
}

///单位数组(类似数组,数十,数百等)

string units[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};

很抱歉,如果答案很明显/我的代码不好,我花了好几个小时就仍然无法弄清楚我的问题

1 个答案:

答案 0 :(得分:0)

int toArabic()意味着你的函数将返回一个整数 - int。但是你的函数什么都不返回可能这就是你的编译器所抱怨的。更改为void toArabic()并查看是否清除了编译器错误。在这种情况下,void意味着什么都不返回。

或者这是运行时错误吗?构建此程序时的输出是什么?