2

好的,所以我知道如何将数字存储到数组中,但我正在编写一个数独程序,我需要从输入文件中读取和存储。该文件将有一个半成品数独板,是的,我只需要用它做一些事情。我的问题是板上的数字没有用空格分隔,例如 123456789,我需要单独读取每个数字以将每个数字存储在数组中的不同位置。然而, cin 只会得到整个组,而 cin.get() 会给我 ASCII 值......所以我对如何让它们单独存储有点困惑。也许这是一个明显的答案,我只是没有看到,我不知道。任何帮助表示赞赏。

感谢尼克的回复。我有一个小功能可以从输入文件中填充二维数组。这里是:

对于 ( i = 0; i < 行; 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) 来阅读结束行并继续。希望这是做事情的正确方法。

4

1 回答 1

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);
}
于 2012-11-30T03:18:37.767 回答