比较 C++ 中的字符 - 类型为"char"的参数与类型为"const char * "的参数不兼容
Comparing chars in C++ - argument of type "char" is incompatible with parameter of type "const char *
我正在尝试比较C++中的两个值(这是新的,所以请轻松)
struct styles{
int itemNo;
char desc[26];
char brand[21]; //between 3 - 20
char category;
double cost;
};
struct,然后im在另一个函数中使用此代码
char cat[2];
for (x=0;x<size;x++)
{
if (strcmp(cat,styleAr[x].category)==0)
if语句中的"styleAr[x].category"出现错误:类型为"char"的参数与类型为"const char*"的参数不兼容
任何关于我如何解决这个问题的解释都将是很棒的
假设cat
是一个字符串(即一个字符后面跟着一个' '
),那么您应该这样做:
if (cat[0] == styleAr[x].category)
当然,如果你使用std::string cat
和std::string category
,你可以写:
if (cat == styleAr[x].category)
您将category
作为单个char
,而cat
是一个字符数组(即char *
)。。。您可能无意将字符串与单个字符进行比较
strcmp
比较字符数组,但类别只是一个char
,因此出现错误。您可以使用==
直接比较两个字符如果类别应该是单个字符,则需要更改比较代码
char cat='?';//or whatever you are looking for
for (x=0;x<size;x++)
{
if (cat == styleAr[x].category)
您正在将未初始化为任何值(至少在您向我们展示的代码中未初始化)的双字符数组(cat
)与单个字符进行比较。
strcmp
函数接受两个类型为const char*
的参数,即两个以null结尾的c样式字符串(一个字符数组,其最后一个元素是"\0"字符,即null字符)。
如果只想比较一个字符,请使用以下代码:
char cat = ; // Put the character you want to compare styleAr[x].category against there.
for (int x = 0 ; x < size; x++)
{
if (cat == styleAr[x].category)
{
// The two characters are equal.
}
}
相关文章:
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 从 C# GUI 将 char * 参数传递给C++ dll 函数
- Swift Call C 方法带有char **参数,并且需要操作char **参数
- 使用"const char*"和"char*"参数连接两个第三方模块
- 将 char * 参数传递给 C# 函数
- 使用 char[] 参数通过 JNI 调用方法
- C# PInvoke - 返回 char* 和引用 char* 参数的函数
- 导出托管的C#函数将返回更改CHAR*参数为未托管的代码
- 即使在 Visual C++ 编译器中,在模板中传递 "const char" 参数也有些麻烦 2013 年 11 月 CTP
- 将'const char*'参数发送到接收'const char* &'的函数
- discover char*参数大小
- lambda接受“char”参数
- 在编译模板方面,char、有符号char或无符号char参数类型的函数重载
- 将类方法传递给const char*参数
- Atoi 仅返回 char* 参数的第一个数字
- 专门化模板成员函数来处理std::string和char[]参数
- 带有 char* 参数的 cout <<打印字符串,而不是指针值
- 带有char[]参数的c++模板
- GetModuleBaseName dosen't take char* 参数
- 以双精度数除以双精度数来获得循环中的余数和char参数不起作用