虚位密码 是一个很有意思的功能,不知道什么时候开始变成了智能锁的标配功能之一。
虚位密码的意思是你输入的密码位数不固定,但是只要你输入的密码有你当初设定的密码,那么就认为是正确的;反之就是错误的。
虚位密码功能在C++ 或者 Java中最类似的应该是String类里面查找+比较功能。
这里仅仅用最简单的算法来进行实现,不求特别复杂的实现。
很多的时候工程里面要取舍 实现的质量(从效率和占用来衡量) 和 实现的速度(编码的时间。Java之所以流行就是因为他的编码速度比较快【一次编译,处处运行】,虽然Java面向对象实现的不是那么完美)。
这里扯远了。本次只实现两个版本的代码:标准C++(运行平台:PC) 和 嵌入式C++(Arduino用的C++)
思路
对于给定的字符串 s,我们首先获取其的首字符 c,之后再用户输入的字符串 p中,去寻找 c所在的位置,再从c所在的位置切取长度与 给定的字符串s 一样的字符串,进行比较(C语言里面加起来减的比较),若比较结果为0,则认为找到该串,返回成功的结果;反之,如果为能在给定的区域找到给定的字符串,即搜索的位置已达末尾,以及分割出来的子串长度已经小于给定的字符串长度,则认为失败,返回失败的结果。
结果
成功:true,找到相似的字符串
失败:false,未找到相似的字符串
下面是一个标准C++的实现,C++版本为11
1 #include<string> 2 #include <iostream> 3 4 int main() 5 { 6 int findlength = 0; //寻找的长度 7 bool isOK = false; //找到了就是true 8 std::string passwd = "218519"; //原始密码 9 std::string userinputpasswd; 10 std::cout << "请输入密码:"; 11 std::cin >> userinputpasswd; 12 while (findlength < userinputpasswd.size()) 13