我有这个代码,基本上我是在尝试学习c ++,而且我无法弄清楚为什么我会一直得到这两个错误
错误:在'cInputChar'中请求成员'length',这是非类型'char [0]'
和
错误:从“char *”转换为“char”无效
我认为这与我声明char变量cInputChar
的方式有关。问题肯定与getChar
函数有关。
我的代码如下:
int getInteger(int& nSeries);
char getChar(char& cSeriesDecision, int nSeries);
int main()
{
int nSeries = 0;
char cSeriesDecision = {0};
getInteger(nSeries);
getChar(cSeriesDecision, nSeries);
return 0;
}
//The function below attempts to get an integer variable without using the '>>' operator.
int getInteger(int& nSeries)
{
//The code below converts the entry from a string to an integer value.
string sEntry;
stringstream ssEntryStream;
while (true)
{
cout << "Please enter a valid series number: ";
getline(cin, sEntry);
stringstream ssEntryStream(sEntry);
//This ensures that the input string can be converted to a number, and that the series number is between 1 and 3.
if(ssEntryStream >> nSeries && nSeries < 4 && nSeries > 0)
{
break;
}
cout << "Invalid series number, please try again." << endl;
}
return nSeries;
}
//This function tries to get a char from the user without using the '>>' operator.
char getChar(char& cSeriesDecision, int nSeries)
{
char cInputChar[0];
while (true)
{
cout << "You entered series number " << nSeries << "/nIs this correct? y/n: ";
cin.getline(cInputChar, 1);
if (cInputChar.length() == 1)
{
cSeriesDecision = cInputChar;
break;
}
cout << "/nPlease enter a valid decision./n";
}
return cSeriesDecision;
}
答案 0 :(得分:2)
char cInputChar[0];
你真的需要一个大小为0
的数组吗?您不能在C ++中拥有大小为0
的数组。这根本不合法。
您需要以下内容:
#define MAX_SIZE 256
char cInputChar[MAX_SIZE];
最好只使用std::string
而不是c风格的字符数组。
来自评论中的讨论:
@Inafune:请选择 good book 。您不会通过添加和删除语法来学习任何编程语言,只是为了编译代码。如果不了解其背后的目的,就不要写一行代码。