请求 charArrayBuffer 中的成员 'compareTo',其非类类型为 'char[9]'
request for member 'compareTo' in charArrayBuffer, which is of non-class type 'char[9]'
我们的想法是创建一个代码来比较一个带有预制名称的 serial.read。
两个声明都是字符数组,长度 [9],因此我不明白为什么会出现这个问题。
法典:
char name1[9] = "Jesper";
char nameBuffer[9];
void setup()
{
Serial.begin(9600);
}
void loop()
{
int i = 0;
nameBuffer[0] = 0;
while(Serial.available() == 0)
{
// wait for data to be send
}
while(Serial.available() > 0)
{
int inByte = Serial.read();
delay(50);
nameBuffer[i] = char(inByte);
i++;
}
Serial.print("Searching for: ");
Serial.println(nameBuffer);
if (nameBuffer.compareTo(name1) < 0 )
{
Serial.println("Did you mean to write: "Jesper"");
}
else
{
Serial.println("Jesper found");
}
}
收到的错误:
错误:请求在"nameBuffer"中请求成员"compareTo",该成员的非类类型为"char[9]"
替换
if (nameBuffer.compareTo(name1) < 0 )
跟
if (strcmp(nameBuffer, name1) != 0 )
因为nameBuffer
无法使用.
运算符访问。
顺便说一句,根据错误消息,您正在用 C++ 而不是 C 进行编程。
尝试
strncmp(nameBuffer, name1, sizeof nameBuffer) < 0
而不是
nameBuffer.compareTo(name1) < 0
您的变量char
数组,这些数组不是 ES class
,因此它们没有方法。
我使用 strncmp
是因为我无法确定 nameBuffer
和 name1
是否正确终止了 null,所以这样您就可以防止一些问题,如果它们不是
由于您使用的是 c++,因此您也可以尝试使用 std::string
,因为这样如果您声明,则无需担心字符串的长度
std::string nameBuffer;
std::string name1("Jasper");
然后要附加char
,您可以只
nameBuferr += static_cast<char>(inByte);
并做比较只是
if (nameBuffer < name1)
相关文章:
- 枚举类的 C 样式强制转换到基础类型 char 的引用
- 无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
- C++:将模板类型 char 转换为 std::string
- 获取"rw_ssid"中成员"长度"的错误请求,该成员属于非类类型"char*"
- 将"std::string {aka std::basic_string}"赋值中的不兼容类型<char>
- 成员引用基类型 'char' 不是 C++ 中的结构或联合
- 错误:请求成员 .. 是非类类型"char"
- 错误:为"运算符 std::string {aka std::__cxx11::basic_string}"指定的返回类型<char>
- 为什么类型 char 返回不同的值?
- 请求成员 'begin' in 'c' 中,它是非类类型 'char [101]' sort(c.begin(), c
- C++ 类型 "char" 的参数与类型 "const char" 的参数不兼容
- 类型 "const char *" 的参数与类型 "char *" 的参数不兼容
- 类型 "const char*" 的参数与类型 "char*" 的参数不兼容。但是为什么?:(
- 创建进程使用路径时出现错误事件:类型 "char *" 的 E0167 参数与类型 "LPWSTR" 的参数不兼容
- 类型 "const char *" 的默认参数与类型 "char *" 的参数不兼容
- 返回类型 char* 的成员函数返回在 while 循环后包含不同字符串的地址
- 接受类型char的输入的问题
- 错误:无法递增类型 'char [6]' 的值
- "char *" 类型的值不能用于初始化类型 "char" 的实体
- 类型 "char *" 的参数与类型 "LPWSTR" 的参数不兼容