C++ 如何使用strcmp\u函数
我编写了一个函数来查找文本中的特定单词,但我有一个问题,我使用strcmp_函数获取const char参数,而[]不是cons char。我如何在这个程序中使用这个函数?(w表示单词)C++ 如何使用strcmp\u函数,c++,string,function,C++,String,Function,我编写了一个函数来查找文本中的特定单词,但我有一个问题,我使用strcmp_函数获取const char参数,而[]不是cons char。我如何在这个程序中使用这个函数?(w表示单词) int比较(常量字符句子[],字符*w) { int i,长度=0,c=0,l=0; int j,计数=0; 字符a[20]={'0'}; 长度=斯特伦(句子); l=斯特伦(w); 对于(i=0;i你有这个函数: int comparision(const char sentence[ ],char *w
int比较(常量字符句子[],字符*w)
{
int i,长度=0,c=0,l=0;
int j,计数=0;
字符a[20]={'0'};
长度=斯特伦(句子);
l=斯特伦(w);
对于(i=0;i你有这个函数:
int comparision(const char sentence[ ],char *w)
在函数的参数列表中,使用类似于数组的语法声明的参数实际上是一个指针
int comparision(const char *sentence,char *w)
即使它是一个数组,当用作表达式时,数组的名称也与指向数组中第一个元素的指针相同,所以这很好
这意味着您可以这样做:
char str1[] = "Hello";
char *str2 = "Hello";
int equal = strcmp(str1, str2) == 0;
当将str1传递给strcmp时,str1会衰减为指针,因此
和你做的完全一样
int equal = strcmp(&str1[0], str2) == 0;
&str[0]
是指向str1中第一个元素的指针,其类型为char*
i、 你使用strcmp很好。
这应该能回答你的问题——你也提到你有问题,但不是问题是什么或你打算做什么,所以……你为什么不尝试做类似的事情呢
int i = 0;
while (sentence[i] != '\0')
{
if (strncmp(&sentence[i], word, l) == 0)
{
count += 1;
i += l;
}
else
i += 1;
}
return (count);
你想有什么问题,因为你的StrncMP刚刚读到数组的< /p>你的编译器错误到底是什么?一个字符数组和字符指针在C++中有相同的签名。<代码> STRMP 是C,不是C++。它支持向后兼容性。但是,如果你有<代码> STD::String ,为什么不使用String?它的安全性,RAII based(无新增/删除)并具有许多预定义的强大方法(包括Coparison)。如果使用string,则您的代码是一个简单的
string1==string2
。不过,您使用的语法并不好。
int i = 0;
while (sentence[i] != '\0')
{
if (strncmp(&sentence[i], word, l) == 0)
{
count += 1;
i += l;
}
else
i += 1;
}
return (count);