Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带可互换字母的字符串_C++_String_Function - Fatal编程技术网

C++ 带可互换字母的字符串

C++ 带可互换字母的字符串,c++,string,function,C++,String,Function,我的作业指导如下: 返回字符串“hope”在给定字符串中任何位置出现的次数,除非我们接受任何字母作为“p”,所以“hode”和“hooe”计数 我正在努力找出如何使第三个字母等于任何东西,并且仍然让程序确定它是正确的 到目前为止,我的代码显然是错误的,但我还是会将其包括在内。 一个大问题是我不能告诉数组检查它是否匹配字符串 int wordsFunction(string words) { int num = 0; for(int i = 0; i < words.length(); i

我的作业指导如下:

返回字符串“hope”在给定字符串中任何位置出现的次数,除非我们接受任何字母作为“p”,所以“hode”和“hooe”计数

我正在努力找出如何使第三个字母等于任何东西,并且仍然让程序确定它是正确的

到目前为止,我的代码显然是错误的,但我还是会将其包括在内。

一个大问题是我不能告诉数组检查它是否匹配字符串

int wordsFunction(string words)
{
int num = 0;

for(int i = 0; i < words.length(); i++)
{
    if(words[i] == "Hope" || words[i] == "hope")
    {
        num++;
    }
}
return num;
}

main()
{
string words;
cout << "Enter a string: ";
getline(cin, words);
cout << wordsFunction(words);
int-words函数(字符串字)
{
int num=0;
for(int i=0;i
这是真的。我不会解释为什么你的代码是错误的,直接去描述一个修复

您的
main
读取允许空格的字符串,这很好:代码的I/O部分不需要更改

现在注意到,要检测单词
“ho*e”
,在单词
w
中的
i
位置处,
w[i]
'h'
w[i+1]
'o'
w[i+3]
是一个
'e'
,并且索引
i+3
有效。这将成为一个简单的检查:

if (i+3 < w.size() && w[i] == 'h' && w[i+1] == 'o' && w[i+3] == 'e') {
    count++;
}
if(i+3
如果
words
string
words[i]
char
,您无法将其与字符数组进行比较,如
“hope”
。请查找子字符串“ho”,然后检查第四个字母是否为“e”。您的代码无法工作。提示:您正在将变量与不兼容的字符进行比较(作为粗略的近似:不同)类型。在程序中,这就像是比较苹果和香蕉。很好。现在最好让这个程序的大小写(上下)证明。@Mudassir使用OP发布的代码表明
的第一个字母“ho*e”
可以是大写,但问题的文本不支持此假设。当然,一个简单的解决方法是在搜索之前将
w
转换为小写。哇,谢谢你,这很有趣。解释得很好。