如何确定字符串是否先包含字符,然后包含数字



我正在用C++制作一个命令行战舰游戏,需要能够确定玩家输入的字符串是否包含字符(a-J(和数字(1-14(,这将表示当前输入的战舰的坐标。有没有一种方法可以在不使用正则表达式的情况下做到这一点(仅仅是因为regex对于这样的问题来说似乎是不必要的;如果它是最好的解决方案,那么就完全可以了(?

我尝试过使用get作为字符,然后使用getline来读取下一个字符,但这似乎效率很低。

试试这个

bool validShipCoords(char input_char, int num) {
/* Check character from A-J or a-j, and number 
less or equal to 14*/
return ((input_char >= 65 && input_char <= 75)
|| (input_char >= 97 && input_char <= 107))
&& num <= 14;
}
int main()
{
string shipCoords;
cout<<"Enter coordinates" <<endl;
getline(cin, shipCoords);
string subCoordNum = shipCoords.substr(1); // Get the number
int coordnum = std::stoi(subCoordNum); // change to int
//shipCoords.at(0) is the letter
if (validShipCoords(shipCoords.at(0), coordnum)) {
cout << shipCoords << " is valid coordinates" << endl;
}
else {
cout << "invalid coordinates" <<endl;
}
}

最新更新