我需要验证用户的一个输入字符串。最终它需要分解成两个坐标。即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