文字列を検証する必要があります。文字列の形式は「V02:01:02:03:04」のようになります。
私がやろうとしていること:
1)正しい長さが提供されていることを確認したい
2)最初の文字は「V」です
3)他のすべての文字は2文字の数字で、コロンで区切られ、正しい位置にあります。
4)空白のタブなどはありません。4
)これ以上の検証について考えることはできません。
私がこれまでに行ったこと
1)関数はlenとfist charを簡単にチェックし、最初の文字の後に続く文字にアルファまたはスペースが含まれていないことを確認しません。しかし、コロンの位置とすべてのコロンの後に2文字の文字をチェックする方法については少し行き詰まっています。
以下は私の試みです。
int firmwareVerLen = 15;
const std::string input = "V02:01:02:03:04"; // this is the format string user will input with changes only in digits.
bool validateInput( const std::string& input )
{
typedef std::string::size_type stringSize;
bool result = true ;
if( firmwareVerLen != (int)input.size() )
{
std::cout <<" len failed" << std::endl;
result = false ;
}
if( true == result )
{
if( input.find_first_of('V', 0 ) )
{
std::cout <<" The First Character is not 'V' " << std::endl;
result = false ;
}
}
if( true == result )
{
for( stringSize i = 1 ; i!= input.size(); ++ i )
{
if( isspace( input[i] ) )
{
result = false;
break;
}
if( isalpha(input[i] ) )
{
cout<<" alpha found ";
result = false;
break;
}
//how to check further that characters are digits and are correctly separated by colon
}
}
return result;
}