我正在尝试学习c ++,其中一项任务是要求用户输入字母-然后要求输入一个字符串,并计算该字符串中第一个字母重复多少次。
我写了一些代码,成功地问到字母和文本字符串-我可以同时显示两者
我可以遍历文本字符串,计算字符串中有多少个字母。当我尝试添加if检查以将循环中字符串中的当前字母与要求的字母1st进行比较时,出现此编译错误:
error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (textToCount[i] == letterToCount)
这是我编写的完整代码
char getLetterToCount(char letterToCount[]);
char getTextToCount(char textToCount[]);
int countLetters(char letterToCount[], char textToCount[]);
int main()
{
char letterToCount[1];
getLetterToCount(letterToCount);
char textToCount[256];
cin.ignore();
getTextToCount(textToCount);
countLetters(letterToCount, textToCount);
return 0;
}
char getLetterToCount(char letterToCount[])
{
cout << "Enter a letter: ";
cin >> letterToCount;
}
char getTextToCount(char textToCount[])
{
cout << "Enter text: ";
cin.getline(textToCount, 256);
}
int countLetters(char letterToCount[], char textToCount[])
{
int numChrsInString = 0;
int numTimesChrtoCountrepeated = 0;
for (int i = 0; textToCount[i] != '\0'; i++)
{
if (textToCount[i] == letterToCount)
{
numTimesChrtoCountrepeated++;
}
}
cout << "num chrs in string: "
<< numChrsInString
<< "num times chr counted: "
<< numTimesChrtoCountrepeated
<< endl;
}
我做了相当多的输出,试图弄清楚这些地方出了什么问题-我删除了该代码,因为这使它更加混乱。
但是编译错误说明了什么是错误的,我只是不明白为什么它是错误的,因为我要比较的东西都是文本字母...
如果知道c ++的人可以解释我做错了,那就太好了
答案 0 :(得分:1)
您正在将char
与指向char
的指针进行比较
使用:
if (textToCount[i] == letterToCount[0])
~~~
注意:很少有明显的挑剔,但以上是导致编译器错误的主要原因
答案 1 :(得分:1)
在C ++中,数组是指针。 C ++认为lettertocount
是一个指针,因为您将其作为数组传递。您不想通过它;您只想传递一个字符:
int countLetters(char letterToCount, char textToCount[])
我想到的一个更大的问题是,为什么您认为必须将lettertocount
作为数组传递?显然,这只是一个字母。当您调用此函数时,您最终想要计算多个字母吗?