【发布时间】:2016-03-07 13:22:22
【问题描述】:
我正在尝试检查用户输入是否与 char 多维数组中的特定值匹配。但我似乎无法找到这样做的方法。用户输入将是从 1 到 9 的数字。我将遍历我的数组以找到匹配的值。我的代码如下,
char input;
getline(cin,input);
char gameBoard[3][3] = {{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
gameBoard[i][j]; //SOME CODE TO COMPARE THE VALUE TO USER INPUT
}
}
我尝试过使用 strcmp,但只能对一维数组执行此操作。
我也尝试通过 atoi 将 char 值转换为数字,但出现错误,
error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
任何关于如何比较的建议将不胜感激。谢谢
【问题讨论】:
-
我统计了这个问题中至少有三四个错误的地方。在我看来,你用这个 C++ 东西走得太快了。在解决这个问题中适度复杂的逻辑之前,在我看来,您应该回去花更多时间研究基础知识。就像什么是 char,什么是 std::string,以及它们中的哪一个被 std::getline 使用。字符和整数等有什么区别……如果您仍然没有牢牢掌握这些基础知识,那么尝试编写这样的问题几乎是不可能的。
-
稳健地处理用户输入是出了名的困难。您可以使用
geline(),但您需要std::string作为第二个参数。如果您依赖用户每行只输入一个字符(数字),那么测试就是string s; getline(cin, s); if(s[0] == gameBoard[i][j])... -
@SamVarshavchik 指出。谢谢
标签: c++ multidimensional-array char strcmp atoi