好吧所以我知道如何将数字存储到数组中,但我正在编写一个Sudoku程序,我需要从输入文件中读取和存储。该文件将有一个半完成数独板,是的我只需要做一些事情。我的问题是电路板上的数字没有用空格分隔,比如123456789,我需要单独读取每个数字,以便将每个数字存储在数组中的不同位置。但是,cin只会得到整个组,而cin.get()会给我ASCII值......所以我对如何单独存储它们感到困惑。也许它是一个明显的答案,我只是没有看到,我不知道。任何帮助表示赞赏。
感谢Nick的回复。我有一个小功能来填充输入文件中的二维数组。这是:
for(i = 0; i< ROWS; i ++) {
for ( j = 0; j < COLS ; j++ )
{
in.get(getData);
data = getData - '0';
myArray[i][j] = data;
}
}
我添加了你推荐的getData - '0'部分,它似乎工作,除了我把它作为输出。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -38 | 1 |
现在输入文件只是9X9行和列'123456789'所以它应该输出它。不知道-38来自哪里? 显示它的代码几乎与现在只填充不同功能的代码相同。任何的想法?与此同时,我会修补。
好的,没关系,我知道它正在阅读结尾并把事情搞砸了。我只是在那里放了一点cin.get(temp)来阅读结尾并继续。希望这是处理事情的正确方法。
答案 0 :(得分:0)
尝试这样的事情:
char c;
while(cin.get(c))
{
if(!std::isdigit(c))
{
/* not a digit - do whatever you want here */
}
int digit = c - '0';
/* now digit contains the integer value of the digit in 'c' and you
* can use it as needed. Let's call a function called dsw:
*/
dsw(digit);
}