C++ 带可互换字母的字符串
我的作业指导如下: 返回字符串“hope”在给定字符串中任何位置出现的次数,除非我们接受任何字母作为“p”,所以“hode”和“hooe”计数 我正在努力找出如何使第三个字母等于任何东西,并且仍然让程序确定它是正确的 到目前为止,我的代码显然是错误的,但我还是会将其包括在内。 一个大问题是我不能告诉数组检查它是否匹配字符串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
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
转换为小写。哇,谢谢你,这很有趣。解释得很好。