C ++调试断言失败,空指针无效

时间:2017-07-17 06:11:59

标签: c++

我到处寻找,但我无法找到解决方案,以确定在我的情况下究竟发生这种情况。

我正在创建一个简单的字符串函数,要求输入一个字符串,并打印出长度。

然而,我得到一个"无效的空指针"运行编译版本时出现断言错误。编译时我没有错误,但是当我运行它时会出现错误。

这是导致问题的功能:

string getString() 
{
    string wordInput;

    cout << "Enter a word that has AT LEAST four (4) letters!  ";
    getline(cin, wordInput);

    while (wordInput.length() <= 3)
{
    cout << "Enter a word that has AT LEAST four (4) letters!  ";
    getline(cin, wordInput);
}

return 0;
} 

while循环不是问题。我评论了它,我仍然有同样的错误。如何初始化单词输入,cout和getline给我错误?

到目前为止,这是我的整个代码(未完成)。我也试过自己运行字符串,getKeyLetter函数不是问题。

#include <iostream>
#include <string>
#include <cassert>

using namespace std;
char getKeyLetter()
{
    char keyLetter;
    string convertFromString;
    cout << "Enter a SINGLE character!  ";
    getline(cin, convertFromString);

while (convertFromString.length() > 1)
{
    cout << "Enter a SINGLE character!  ";
    getline(cin, convertFromString);
}

assert(convertFromString.size() == 1);
keyLetter = convertFromString[0];
return 0;
}

string getString()
{
string wordInput;

cout << "Enter a word that has AT LEAST four (4) letters!  ";
getline(cin, wordInput);

while (wordInput.length() <= 3)
{
    cout << "Enter a word that has AT LEAST four (4) letters!  ";
    getline(cin, wordInput);
}

return 0;
} 

int main()
{
getKeyLetter();
getString();
return 0;
}

1 个答案:

答案 0 :(得分:0)

首先,在你的GetKeyChar()函数中,编写:

char ch;
cout << "Enter a single character: ";
cin >> ch;

将为您提供该人在命令提示符中键入的第一个字符。因此,输入“check”将有ch = c。

其次,正如伊兰所说,在你的职能结束时,你有

return 0;

除非您希望两个函数分别返回char和字符串,否则将它们设为void GetKeyLetter()和void GetString()。或者,如果你想要返回一些东西,让它们返回ch(从我的例子中)并返回wordInput。

只有int main(),每个标准,需要返回0,以显示它正确退出。放在函数前面的变量类型是您计划返回的变量。 0是一个int,所以它是根据约定返回的。正如所指出的那样,主要不需要回报。如果您希望函数返回值,请在main中执行此操作。

string str;
char ch;
ch = GetKeyLetter();
str = GetString();
return 0;

让函数返回你想要的char和string值。