Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从文件加载二维向量_C++_Io_Segmentation Fault - Fatal编程技术网

C++ 从文件加载二维向量

C++ 从文件加载二维向量,c++,io,segmentation-fault,C++,Io,Segmentation Fault,我正在为一个数独解算器做一个项目。我试图将文件中的元素读入我创建的board对象。代码编译得很好,但是当运行时,当文件试图在主函数中打开时,它给了我一个分段错误。有什么建议吗 下面是我的read函数代码: void Sudoku::readPuzzle(Scanner& inStream) { char placeHolder; int row = 1; int col = 1; int newInt; while(inStream.hasNext

我正在为一个数独解算器做一个项目。我试图将文件中的元素读入我创建的board对象。代码编译得很好,但是当运行时,当文件试图在主函数中打开时,它给了我一个分段错误。有什么建议吗

下面是我的read函数代码:

void Sudoku::readPuzzle(Scanner& inStream)
{
    char placeHolder;
    int row = 1;
    int col = 1;
    int newInt;
    while(inStream.hasNext())
    {
            placeHolder = inStream.next();
            if(placeHolder == '.')
            {
                    board.setSquare(row,col,DUMMY);
            }
            else
            {
                    newInt = placeHolder;
                    board.setSquare(row,col,newInt);
            }
            if(col > NINE)
            {
                    row++;
            }
            col++;

    }

} // void Su)doku::readPuzzle(Scanner& inStream)
这是主程序的一部分,它给了我一个错误:

int main(int argc, char *argv[])
{
  string timeCallOutput;
  string inStreamName;
  string outStreamName;

  Scanner inStream;
  ofstream outStream;
  Sudoku sudoku;

  Utils::CheckArgs(2, argc, argv, "infilename outfilename");
  inStreamName = static_cast<string>(argv[1]);
  outStreamName = static_cast<string>(argv[2]);

  Utils::FileOpen(outStream, outStreamName);

  timeCallOutput = Utils::timecall("beginning");
  outStream << timeCallOutput;
  outStream << TAG << "\nBeginning execution" << endl;
  outStream << "infile  '" << inStreamName << "'\n";
  outStream << "outfile '" << outStreamName << "'\n";
  outStream.flush();

  inStream.openFile(inStreamName);
  cout << "File Open Succesful.";

  sudoku.readPuzzle(inStream);
  outStream << sudoku.toString("\nAfter reading");
  outStream.flush();
  inStream.close();
intmain(intargc,char*argv[])
{
字符串时间输出;
字符串流内名称;
字符串扩展名;
扫描器入流;
流外流;
数独;
Utils::CheckArgs(2,argc,argv,“infilename outfilename”);
inStreamName=静态_转换(argv[1]);
扩展流名称=静态_cast(argv[2]);
Utils::FileOpen(扩展流,扩展流名称);
timeCallOutput=Utils::timecall(“开始”);

将您的代码扩展到一个我们可以复制、编译和验证的最小示例,如果这里的大多数行没有导致SEGFULT,那么就不要显示它们,这只会降低所有人的速度!在StackOverflow中搜索“c++读取文件结构”。需要
Utils::CheckArgs
Utils::FileOpen
的代码。用代码编辑您的问题,或将代码简化为再现问题的最小示例。将其简化为最小完整示例不仅是为了我们的方便,也是一项至关重要的编程技能。随着您的学习,错误很可能会变得显而易见清除多余的代码。当您执行
row++
时,您可能希望同时执行
col=0
否?将您的代码简化为一个我们可以复制、编译和验证的最小示例,如果此处的大多数行没有导致segfault,则不显示它们,这只会降低所有人的速度!搜索StackOverflow“c++读取文件结构"。需要
Utils::CheckArgs
Utils::FileOpen
的代码。用代码编辑您的问题,或将代码简化为再现问题的最小示例。将其简化为最小完整示例不仅是为了我们的方便,也是一项至关重要的编程技能。随着您的学习,错误很可能会变得显而易见清除多余的代码。当您执行
row++
时,您可能希望同时执行
col=0
否?