如果输入为NULL,则返回-1

时间:2017-11-15 01:22:37

标签: c++ function pointers input null

代码工作正常,但我需要添加此约束。 “如果输入为NULL,则返回-1”。

我只是想知道如何做到这一点。每当我把NULL放入s时,它就崩溃了。

旁注:如果您需要知道,这会将Excel标题转换为A = 1,Z = 26,AA = 27,AB = 28等数字。

#include <iostream>

using namespace std;

class CIS14
{
public:
int convertExcelTitleToNumber(string* s)
{

    string str = *s;

    int num = 0;
    for (unsigned int i = 0; i < str.length(); i++)
    {
        num = num * 26 + str[i] - 64;
    }
    return num;
}
};
int main()
{
CIS14 cis14;
string s = "AA";
cout << cis14.convertExcelTitleToNumber(&s) << endl;

return 0;

}

1 个答案:

答案 0 :(得分:1)

  

每当我将NULL放入s时,它就会崩溃。

这根本不让我感到惊讶,取消引用空指针(在你的情况下为string str = *s)是未定义的行为。

要在传递空字符串指针时阻止此操作:

cout << cis14.convertExcelTitleToNumber(nullptr) << endl;

你需要这样的东西作为你的函数中的第一个事物,之前试图取消引用s

if (s == nullptr)
    return -1

如果您陷入黑暗时代,请随意使用NULL代替nullptr: - )