从stdin读取并将值存储到数组C ++中

时间:2011-07-05 03:39:35

标签: c++ stdin

  

可能重复:
  How to convert a 2d char array to a 2d int array?

我正在尝试从标准输入读取输入并在遇到EOF时停止阅读。我需要将这些值作为整数存储在2x2数组array[i][j]中。

我正在从单行读取81个数独字符(整数)+另外两个字符(\nEOF),共计83个。

例如:

STDIN -- > 123414292142341......2\n <EOF>

我如何只存储每个array[i][j]中的数字?当我遇到<EOF>时停止阅读?

因此,在每9个整数之后,我需要增加j以获得下一行。

我希望在C ++中做到这一点

谢谢!


到目前为止我已尝试过这个

//用83个字符的单行读取(81个数独整数+ \ n和 //将每个整数存储到相应行和列的数组中

#include iostream

using namespace std;

string input_line;

int main()
{

  while(cin) {
    getline(cin, input_line);
  };


  return 0;
}

如何将字符串“input_line”标记为整数字符?然后到atoi转换为int,然后最终将它们存储在Sudoku数组中?


好的,谢谢差不多完成了。但我现在继续从'char'转换为'const char *'错误!

#include <iostream>
#include <stdlib.h>

using namespace std;

string input_line;

int main()
{

  char buffer[9][9];
  int sudoku[9][9];

  int v;

  cout << "Enter input: " << endl;

  cin >> (char*)buffer;

  for(int i = 0; i < 9; i++)
        for(int j = 0; j < 9; j++)
                v = atoi(buffer[i][j]);
                sudoku[i][j] = v;

1 个答案:

答案 0 :(得分:-1)

如果你想要在C ++中,那么你可以选择使用C ++样式cin。以下是伪代码:

cout<<"Enter input:\n";
char sudoku[9][9];
cin>>&sudoku[0][0];

这里我们利用了任何数字都小于< 256的事实。因此,您的表格将自动安排在sudoku[][]内。