简单的C++程序,用于计算子字符串的实例数
simple C++ program to calculate number of instances of a substring
有人可以指出以下代码中的错误吗?我正在使用一种天真的方法,即逐个字符比较两个字符串字符并更新变量"u",然后将其与子字符串的长度进行比较。如果这是真的,则变量"c"将更新一个单元。
C++课程:
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
int main()
{
char s[50],a[20];
cin.getline(s,50);
cin.getline(a,20);
//int l=strlen(s);
int p=strlen(a);
int i,c=0,j,u=0,k;
for(i=0;s[i]!=' ';i++)
{
if(a[i]=' ')
{break;}
if(s[i]==a[0])
{
for(j=i,k=0;a[k]!=' ';j++,k++)
{
if(s[j]==a[k])
{
u++;
//continue;
}
//else
//break;
}
//cout<<endl<<u;
if(u==p)
{
c++;
}
}
u=0;
}
cout<<endl<<"count "<<c;
getch();
}
对于任何类型的输入组合,我得到的输出为 0。
问题出在这一部分:
if (a[i] = ' ')
{
break;
}
首先,您使用的是=
而不是==
,但这不是问题的全部。要么将a[i]
更改为s[i]
,要么注释掉整个块。我不明白为什么需要它。
我的提示和我的编码约定,以避免您使用=
而不是==
的错误:
if(a[i]=' ')
是将右值放在操作数的左侧,将左值放在右侧,如下所示:
if (' ' == a[i])
这个约定将避免这样的错误(你会得到一个编译错误(:
if (' ' = a[i])
此代码将生成编译错误:
Error C2106 '=': left operand must be l-value
相关文章:
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 通过字符串来计算长度需要更长的时间,而不是移动字符串几次?
- 如何计算特定字母在字符串中出现的次数?(C++)
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 使用标准库计算字符串中的十进制数
- 如何计算字符串中用户输入元素的出现次数?
- 如何在 C++ 中计算字符串的算术运算
- 计算字符串中子字符串的出现次数
- 用于计算字符串中元音的函数
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- 计算表达式字符串由 std::map 中的键组成
- 如何计算字符串 c++ 中的"xxx"数?
- 通过将文本文件读取为字符串/向量来计算加权/未加权 GPA
- 如何更有效地计算n个字符串之间的不匹配分数?
- 将字符串计算为 C++ 中的表达式
- 在C++中从字符串计算算术表达式
- 在字符串计算后添加空字符
- C++使用C字符串计算文件中的字符、单词、句子
- 不使用字符串计算数字中的数字