通过循环c ++

时间:2018-11-11 04:19:07

标签: c++ compiler-errors

我正在尝试学习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 ++的人可以解释我做错了,那就太好了

2 个答案:

答案 0 :(得分:1)

您正在将char与指向char的指针进行比较 使用:

if (textToCount[i] == letterToCount[0])
                                   ~~~

注意:很少有明显的挑剔,但以上是导致编译器错误的主要原因

答案 1 :(得分:1)

在C ++中,数组是指针。 C ++认为lettertocount是一个指针,因为您将其作为数组传递。您不想通过它;您只想传递一个字符:

int countLetters(char letterToCount, char textToCount[])

我想到的一个更大的问题是,为什么您认为必须将lettertocount作为数组传递?显然,这只是一个字母。当您调用此函数时,您最终想要计算多个字母吗?