我到处寻找,但我无法找到解决方案,以确定在我的情况下究竟发生这种情况。
我正在创建一个简单的字符串函数,要求输入一个字符串,并打印出长度。
然而,我得到一个"无效的空指针"运行编译版本时出现断言错误。编译时我没有错误,但是当我运行它时会出现错误。
这是导致问题的功能:
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;
}
答案 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值。