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

Read from stdin and store values into array C++

本文关键字:数组 C++ 存储 stdin 读取      更新时间:2023-10-16

可能重复:
如何将2d char数组转换为2d int数组?

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

我从一行读取81个数独字符(整数(,再加上2个字符(nEOF(,总共83个。

例如:

STDIN -- > 123414292142341......2n <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,最后将它们存储在数独数组中??


好的,谢谢你。但我现在一直得到一个从"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;

如果您希望使用C++,则可以选择使用C++样式的cin。以下是伪代码:

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

在这里,我们利用了这样一个事实,即任何数字都将小于< 256。所以你的桌子会自动安排在sudoku[][]里面。