我有一个应用程序接受来自 C++/CLI 的十六进制值richtextbox
。
该字符串来自用户输入。
样本输入和预期输出。
01 02 03 04 05 06 07 08 09 0A //good input
0102030405060708090A //bad input but can automatically be converted to good by adding spaces.
XX ZZ DD AA OO PP II UU HH SS //bad input this is not hex
01 000 00 00 00 00 00 01 001 0 //bad input hex is only 2 chars
如何编写函数:
1. 检测输入是好还是坏输入。
2. 如果输入错误,请检查哪种错误输入:没有空格,不是十六进制,必须是 2 个字符拆分。
3.如果没有空格输入错误,则自动添加空格。
到目前为止,我通过搜索以下空间来制作空间检查器:
for ( int i = 2; i < input.size(); i++ )
{
if(inputpkt[i] == ' ')
{
cout << "good input" << endl;
i = i+2;
}
else
{
cout << "bad input. I will format for you" << endl;
}
}
但它并没有真正按预期工作,因为它返回:
01 000 //bad input
01 000 00 00 00 00 00 01 001 00 //good input
更新
1 检查输入是否实际上是十六进制:
bool ishex(std::string const& s)
{
return s.find_first_not_of("0123456789abcdefABCDEF ", 0) == std::string::npos;
}