C++ 如何使用strcmp\u函数

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

我编写了一个函数来查找文本中的特定单词,但我有一个问题,我使用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 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);