我需要驗證用戶的一個輸入字符串。最終它需要分解成兩個座標。即a4 c3。一旦他們是座標,他們需要分解成4個獨立的整數。 a = 0 b = 1等。它們還必須遵循以下規定:輸入字符串驗證,無需C++的外部庫
如果達到輸入結束信號,則程序退出。 否則,將從輸入中丟棄所有非字母數字字符。 如果剩下的是單個字母'Q' 然後程序退出。 如果剩下的內容由4個字符組成,前兩個字符中包含一個字母和一個數字,最後兩個字符中包含一個字母和一個數字,並且每個字母數字對在我們網格的合法範圍內 然後輸入可以接受。
我完全過度思考和毀了我的功能。請讓我知道我可以在哪裏修改。
我主要是遇到麻煩從一個字符串,到四個字符當且僅當數據是有效的。我可以處理的其他一切。
這是我到目前爲止。
void Grid::playerMove()
{
string rawMove;
string pair1 = " ";
string pair2 = " ";
bool goodInput = false;
char maxChar = 'a';
char chary1, chary2;
int x11,x22,y11,y22;
for (int i =0; i<size; i++)
{
maxChar++;
}
while(!goodInput)
{
cout<<"What two dots would you like to connect? (Q to quit) ";
cin>>rawMove;
rawMove = reduceWords(rawMove);
if (rawMove == "Q")
{
cout<<"end game";
goodInput = false;
}
else if (rawMove.size() == 4)
{
for(int j=0;j<2;j++)
{
if (pair1[j] >='a' && pair1[j] <=maxChar)
{
chary1 = pair1[j];
}
else if(pair1[j] >=0 && pairl[j]<=size+1)
{
x1 = pair1[j];
}
}
for(int k=0;k<2;k++)
{
if (pair2[k] >='a' && pair2[k] <=maxChar)
{
chary2 = pair2[k];
}
else if(pair2[k] >=0 && pair2[k]<=size+1)
{
x2 = pair2[k];
}
}
}
if(char1 != NULL && char2 != NULL && x1 !=NULL && x2 != NULL)
{
for (int m = 0; m <= size m++)
{
if (char1 == m;)
{
x1 = m;
}
}
for (int n = 0; n <= size n++)
{
if (char2 == n)
{
x2 = n;
}
}
}
}
最終目標是讓x1,x2,y1和y2具有相應的值。
請記住,我不允許有任何外部庫。
我會建議''。這是語言標準的一部分。 –
好吧,正常的陷阱檢查,你知道'cin'停在空白?什麼是'reduceWords',它是如何定義的? –
這個甚至現在編譯? Char1,Char2,x1,&x2沒有在任何地方定義(從我所能看到的)。 – Aaron