C 检查字符串的最后一个字符是否与 X 相等
C check if last character of string is equal with X
我正在为我的 arduino 写一个草图,我想检查我的字符串的最后一个字符。
例如:
如果输入是 cats-
我想看看最后一个字符(在我的例子中是“-”)是否实际上是 -
我使用的代码:
串行事件函数
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '.') {
stringComplete = true;
}
}
}
这是通过检查输入是否等于 -
来检查输入字符串是否完整。然而,这仅适用于控制台,因为我使用的 python 脚本将所有内容一起发送
void loop() {
if (stringComplete) {
Serial.println(inputString);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.println("Altitude:");
display.println(inputString);
display.display();
// clear the string:
inputString = "";
stringComplete = false;
}
知道如何检查吗?
在 C++ 中,std::string
的最后一个字符是 s.back()
(如果字符串为空则为 UB,因此请先检查。)我知道您的问题被标记为 c,但是代码本身正在使用 std::string
所以我想它真的是 C++。
back()
成员函数,类似于std::vector
等有序容器中的同名成员函数,是C++11官方加入的,所以可能会也可能不会出席。如果不是,您可以使用:
*(s.end()-1)
或:
s[s.size()-1]
如果 s
确实是一个 C 字符串(即 char *
),您将不得不使用:
s[strlen(s)-1]
但是strlen
需要读取整个字符串,所以效率不高。
以上都是和s.back()
一样的问题:如果字符串为空,结果是Undefined Behaviour,所以需要先检查一下
更改此行:
if (inChar == '.') {
stringComplete = true;
}
至
if (inChar == '\n') {
stringComplete = true;
}
换行符在 C
、C++
、java
、javascript
等等中是 '\n'
...但是无论您使用什么语言,您可能不应该将换行符添加到字符串中。
我正在为我的 arduino 写一个草图,我想检查我的字符串的最后一个字符。
例如:
如果输入是 cats-
我想看看最后一个字符(在我的例子中是“-”)是否实际上是 -
我使用的代码:
串行事件函数
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '.') {
stringComplete = true;
}
}
}
这是通过检查输入是否等于 -
来检查输入字符串是否完整。然而,这仅适用于控制台,因为我使用的 python 脚本将所有内容一起发送
void loop() {
if (stringComplete) {
Serial.println(inputString);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.println("Altitude:");
display.println(inputString);
display.display();
// clear the string:
inputString = "";
stringComplete = false;
}
知道如何检查吗?
在 C++ 中,std::string
的最后一个字符是 s.back()
(如果字符串为空则为 UB,因此请先检查。)我知道您的问题被标记为 c,但是代码本身正在使用 std::string
所以我想它真的是 C++。
back()
成员函数,类似于std::vector
等有序容器中的同名成员函数,是C++11官方加入的,所以可能会也可能不会出席。如果不是,您可以使用:
*(s.end()-1)
或:
s[s.size()-1]
如果 s
确实是一个 C 字符串(即 char *
),您将不得不使用:
s[strlen(s)-1]
但是strlen
需要读取整个字符串,所以效率不高。
以上都是和s.back()
一样的问题:如果字符串为空,结果是Undefined Behaviour,所以需要先检查一下
更改此行:
if (inChar == '.') {
stringComplete = true;
}
至
if (inChar == '\n') {
stringComplete = true;
}
换行符在 C
、C++
、java
、javascript
等等中是 '\n'
...但是无论您使用什么语言,您可能不应该将换行符添加到字符串中。