将数字列表单独存储到C ++中的二维数组中

时间:2012-11-30 01:57:59

标签: visual-c++

好吧所以我知道如何将数字存储到数组中,但我正在编写一个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)来阅读结尾并继续。希望这是处理事情的正确方法。

1 个答案:

答案 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);
}