【发布时间】:2015-10-16 11:26:11
【问题描述】:
我正在开发一个函数,该函数将用户输入作为 main 的引用,并将其与存储字母表的字符串数组进行比较。我的目标是让函数计算 user_string 中每个字母出现的次数。这是我到目前为止得到的:
int letter_counter(string user_Text_Ref)
{
string alfa_arr[LETTERS] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
int antal_arr[LETTERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int i, j;
for(i = 0; i < LETTERS; i++)
{
for(j = 0;j < sizeof(user_Text_Ref) ; j++)
{
if(alfa_arr[i] == user_Text_Ref(j)) // Here is my problem.
{
antal_arr[i] += 1;
cout << alfa_arr[i] << " : " << antal_arr[i] << endl;
}
else
{
continue;
}
}
}
return antal_arr;
}
所以快速总结一下这是什么。函数 letter_counter 从 main 引用用户提交的字符串作为参数。 LETTERS 是一个设置为 26 的 const int。 alfa_arr 包含所有小写字母 a-z 并且 antal_arr 包含 与字母对应的数字,用于记录所有的出现次数 这些信。 第一个 for 循环遍历所有字母,第二个循环遍历字符串 user_Text_Ref,我很困惑。
我尝试了几种比较 alfa_arr[i] 和 user_Text_Ref 的方法(==,strcmp 和这些的变体,还有一些我不记得了) 我收到一个我不理解的错误(我正在使用代码块):
error: no match for call to ‘(std::string {aka std::basic_string<char>}) (int&)’|
这是什么意思?
在这种情况下比较两个字符串的最佳方法是什么?
(你能用字符串和整数创建一个多维数组吗?)
我对 c++ 还是很陌生,感谢任何帮助或建议。 感谢您花时间阅读我的问题。
干杯!
【问题讨论】:
-
您可能更喜欢
int antal_arr[LETTERS] = {};来进行零初始化 -
你可以用
user_Text_Ref[j]得到string的第i个字符 -
sizeof(std::string)? -
Maps 将字母存储为键并将出现次数存储为值是一个更好的选择
-
为了解释@LogicStuff 注释,你得到
std::string实例的大小和user_Text_Ref.size()
标签: c++ arrays string reference