gpt4 book ai didi

c++ - 基于匹配字符串模式简化函数

转载 作者:行者123 更新时间:2023-11-30 17:47:27 27 4
gpt4 key购买 nike

问题:我是 C++ 新手,在编写以下代码后似乎应该有一种方法可以缩短它。也许通过某种方式匹配字符串?这将如何完成?

该函数接受一个字符串 message通过串行端口接收并设置 pinValues[] 的特定元素的值数组取决于message 。将设置的值由最后一个字符 H 确定。或L就在 \n 之前.

字符串模式:(a number)(H or L)\n

例如:message == "4H\n"将设置第 5 个元素 pinValues[4]HIGH 。字符串开头的数字可以是 1 到 2 位数字

void setPinValues(String message) {
if( message == "1H\n" ) {
pinValues[1] = HIGH;
}
if( message == "1L\n" ) {
pinValues[1] = LOW;
}
if( message == "2H\n" ) {
pinValues[2] = HIGH;
}
if( message == "2L\n" ) {
pinValues[2] = LOW;
}
if( message == "3H\n" ) {
pinValues[3] = HIGH;
}
if( message == "3L\n" ) {
pinValues[3] = LOW;
}
if( message == "4H\n" ) {
pinValues[4] = HIGH;
}
if( message == "4L\n" ) {
pinValues[4] = LOW;
}
if( message == "5H\n" ) {
pinValues[5] = HIGH;
}
if( message == "5L\n" ) {
pinValues[5] = LOW;
}
if( message == "6H\n" ) {
pinValues[6] = HIGH;
}
if( message == "6L\n" ) {
pinValues[6] = LOW;
}
}

最佳答案

这可能不是官方“C++”认可的方法,但您可以这样做:

unsigned int pinNo = 0;
unsigned char level = 0;
int result = sscanf(message.c_str(), "%u%c", &pinNo, &level);
if (result < 2)
// it failed
if (pinNo > 6)
// bad data
levelVal = (level == 'H') ? HIGH : LOW;

关于c++ - 基于匹配字符串模式简化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18928061/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com