C ++需要帮助以获取用户对String Frequency Program的输入

时间:2019-11-20 02:29:55

标签: c++

这是我的代码。我必须编写一个程序,该程序需要用户输入一个字符串并显示该字符串中每个字母的频率。无论我做什么,我都会将其视为错误。获取此代码的用户输入的正确方法是什么。任何帮助将非常感激。谢谢!:

error: array must be initialized with a brace-enclosed initializer

    int main()
{
    string input;
    cin >> input;
   char freq[100] = input;
   int c = 0, count[26] = {0};
   while ( freq[c] != '\0' )
   {

      if ( freq[c] >= 'a' && freq[c] <= 'z' )
         count[freq[c]-'a']++;
      c++;
   }

   for ( c = 0 ; c < 26 ; c++ )
   {
      if( freq[c] != 0 )
         printf("%c occurs %d times in the entered string.\n",c+'a',count[c]);
   }
}

2 个答案:

答案 0 :(得分:0)

使用std :: string比老式char更好!实际上,您应该使用您还不熟悉的那些知识。

但是如果您现在想使用char,则可以删除变量input。u可以将main()函数中的前三行更改为:

char freq[100];
cin >> freq;

答案 1 :(得分:0)

嘿,我想我找到了问题的答案:

 #include <iostream>
#include <string.h>

using namespace std;

   int main()
{
   string input;
   cout<<"Enter lowercase string: ";
   cin>>input;
   cout<<"Number of characters in string: "<<input.size()<<"\n";
   std::string freq = input;
   int c = 0, count[26] = {0};
   for (std::string::size_type i = 0; i < input.size(); i++) 
   {

      if ( freq[i] >= 'a' && freq[i] <= 'z' ){
         count[freq[i]-'a']++;
      }
      c++;
   }


   for ( c = 0 ; c < 26 ; c++ )
   {
      if( count[c] != 0 )
         printf("%c occurs %d times in the entered string.\n",c+'a',count[c]);
   }
}