函数不返回我想要的值
function not returning value I want
我希望能够接受用户输入并为给定的字母分配一个值。我想我把那部分放下来了,现在问题是返回值。
#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;
}
当我将总数声明为 0 时,返回始终为 0,但是当我不声明它时,我得到的返回值为 229...等随机数。
我认为word.find(i)
可能不是你想在那里称呼的。要访问字符串中的特定字符,请使用方括号,即:word[i]
而不是word.find(i)
。
如果你不初始化它(设置它的值),使用它是不定义的行为,可以返回任何随机值 - 包括 0
没有构造函数的类型(如 int
)将只分配空间并具有未定义的值,通常基于先前使用该位置的任何内容。
word.find
不做你认为它所做的事情,它是在word
中寻找i
您只想使用word[]
:
if(word[i] == 'a' || word[i] == 'A')
此外,您可能希望将std::endl
放在cout
行的末尾
如果不声明结果为 0,结果是随机的原因是 c++ 和 c 不初始化数据。如果声明一个变量,如 total,则初始值是内存中该位置的任何值。它真的可以是任何东西。始终初始化变量的值。
我认为您没有返回任何有意义的内容的原因是因为您使用了查找错误。 std::string::find 不返回布尔值,如果返回一个位置。因此,您要检查是否针对显示"此字符串中不存在该字符"的字符串位置。那就是 std::string::npos。因此,您将需要:
if(word.find('a') != string::npos || word.find('A') != string::npos){
total += 1;
}
相关文章:
- 如何设置一个范围来提取我想要获得的信息
- 链接列表运算符重载没有打印出我想要的内容
- 莱克斯没有返回我想要的东西
- 而不是那么多的 if 语句,我想要一个逻辑,我可以用一个语句或优化的方式来完成
- 我想要一个具有子函数的函数访问相同的命名函数,而不使用它取决于其子类的类
- 如何让m_refcount变量打印出我想要的值而不是垃圾
- 我想要一个改变数组快速排序的2个数字的函数
- 输出不是我想要C++的
- 使用运算符覆盖排序没有得到我想要的
- C ++,否则文本程序不会进入我想要的途径
- 如何声明一个未知大小的数组,然后输入直到我想要,然后获取数组的大小
- 我如何使用 juce 的文件过滤器描述我想要的文件过滤器?
- 如何设置此视觉工作室 (2015) 自定义生成步骤(工具?基本上,我想要一个修改头文件(c ++)的预处理器步骤
- 代码不会发送我想要的权衡
- 无法在openGL和GLUT中为我想要的确切对象设置动画
- 我如何强迫Visual Studio使用我想要的依赖性库名称
- 我的 OpenGL QQuickItem 没有我想要的大小
- 我可以/应该在 #ifndef 后输入任何我想要的东西
- 函数不返回我想要的值
- 为什么Clang有时返回nullptr,有时返回我想要的