0
我有一個接受來自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("abcdefABCDEF ", 0) == std::string::npos;
}