Mam problem z pewną częścią mojego kodu, chciałabym żeby użytkownik mógł wprowadzić pole pionka, którym chce się poruszyć, ale tak aby to było za jednym razem tzn np a5 lub 5a. Potem litery muszę zamienić (z pomocą ASCII) na cyfry, a cyfry zostawić bez zmian i wykorzystać te dane do odnalezienia odpowiedniej wartości tablicy.
POMOCY :)
0
0
Jeżeli miałbyś tablicę znaków
char input[] = {'a', '5', '\0'};
To mógłbyś zrobić
int column = input[0] - 'a';
I wtedy gdy wpiszesz a
to dostaniesz column
jako 0, b
to 1, c
to 2 i tak dalej.
O to Ci chodzi?
0
int coulmCharToNumber(char ch)
{
ch = std::tolower(ch);
if (std::islower(ch)) {
return ch - 'a';
}
throw invalid_argument("column name out of range");
}
…
char charColumn;
int row;
istringstream data("a5");
if (data >> row) {
if (data >> charColumn) {
SelectField(coulmCharToNumber(charColumn), row);
} else {
throw invalid_argument("invalid move data");
}
} else {
data.clear();
if (data >> charColumn >> row) {
SelectField(coulmCharToNumber(charColumn), row);
} else {
throw invalid_argument("invalid move data");
}
}