C++ 从文件加载二维向量
我正在为一个数独解算器做一个项目。我试图将文件中的元素读入我创建的board对象。代码编译得很好,但是当运行时,当文件试图在主函数中打开时,它给了我一个分段错误。有什么建议吗 下面是我的read函数代码: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
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
否?