功能没有返回我想要的值

Kil*_*ing 5 c++

我希望能够获取用户输入并为给定的字母赋值.我想我已经把那部分搞定了,现在问题就是返回价值.

#include <iostream>
#include <string>
using namespace std;

int ch2n(string word);

int main()
{
     string inputWord;

     cout << "Type Word: ";
     cin >> inputWord;
     cout << ch2n(inputWord);
}

int ch2n(string word)
{
    int total = 0;
    for(int i = 0;i != word.size(); i++)
    {
        if(word.find(i) == 'a' || word.find(i) == 'A')
        {
            total += 1;
        }
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

当我将总数声明为0时,返回值始终为0,但是当我不声明它时,我得到的返回值为229 ....等随机数.

Pet*_*eld 8

我想word.find(i)可能不是你想要的那个.要访问字符串中的特定字符,请使用方括号,即:word[i]而不是word.find(i).

  • 更好的是,使用`tolower(word [i])=='a'`而不是`word.find(i)=='a'|| word.find(i)=='A'` (2认同)

Gle*_*aum 4

如果您不初始化它(设置其值),则使用它是未定义的行为,并且可以返回任何随机值 - 包括 0

没有构造函数的类型,例如int只会分配空间并具有未定义的值,通常基于先前使用时该位置发生的任何情况。

word.find不做你认为它做的事,它正在i寻找word

你只想使用word[]

if(word[i] == 'a' || word[i] == 'A')
Run Code Online (Sandbox Code Playgroud)

另外,您可能想在行std::endl尾添加cout

  • 请随时对任何有帮助的答案进行投票,如果您认为已提供答案,请选择一个答案,很高兴我们可以提供帮助。 (2认同)