我正在开发一个验证if循环,它在开头和结尾检查管道并确保有32个有效字符(有效字符是:和|)
我想知道为什么我的程序没有正确读取32字符输入的if语句。这是我到目前为止所拥有的。
void checkitout(string validate)
{
string check;
check = validate;
if ((check.length() == 31) &&
(check.substr(0,1) == "|") &&
(check.substr(31,1) == "|"))
{
cout << "is this running?";
for (int i = 0; i < 31; i++)
{
cout << "for loop running";
if (!(check.substr(i, 1) == ":") || !(check.substr(i, 1) == "|"))
{
cout << "Please enter acceptable barcode.";
return;
}
}
}
else
{
cout << "else Please enter acceptable barcode";
}
}
我是新手,但我认为我走在正确的轨道上。 cout将测试以查看循环是否正常工作。它适用于其他州。这是一个示例输入
||:| ::: |:|:|| || :::::::| :: | ||| :::
与往常一样,任何关于如何做得更好的想法都非常感谢。
答案 0 :(得分:1)
你的字符串长度为32,因为check.length()== 31,if条件为false。 你的循环中的if条件也需要“&amp;&amp;”而不是“||”,因为你希望它既不是“|”也不是“:”是不可接受的条形码。
更改以粗体标记。
void checkitout(string validate)
{
string check;
check = validate;
string one = check.substr(4,1);
cout << (check.substr(4,1) == one) << endl;
if ((check.length() == **32**) &&
(check.substr(0,1) == "|") &&
(check.substr(31,1) == "|"))
{
cout << "is this running?";
for (int i = 0; i < 31; i++)
{
cout << "for loop running";
if (!(check.substr(i, 1) == ":") **&&** !(check.substr(i, 1) == "|"))
{
cout << "Please enter acceptable barcode.";
return;
}
}
}
else
{
cout << "else Please enter acceptable barcode";
}
}