[英]C++ ostream parameters
我正在构建一个解决boggle board的项目。 我目前感兴趣的两个功能是
void Boggle::SolveBoardHelper(bool printBoard, int row, int column, int rowMax, int columnMax,
ofstream& output, int numSteps, int steps[4][4], string currPath)
void Boggle::SolveBoard(bool printBoard, ostream &output) {
ofstream outputFile;
outputFile(output); // stuck here
string currPath; // used to track the current path on the board
for(int pos_x = 0; pos_x < BOARD_SIZE; pos_x++){
for(int pos_y = 0; pos_y < BOARD_SIZE; pos_y++)
SolveBoardHelper(print_or_not, pos_x, pos_y, BOARD_SIZE, BOARD_SIZE, outputFile, numSteps, visited, currPath);
}
}
我的困惑之处在于,当用户调用 SolveBoard 来求解棋盘时,他们可以选择将“cout”或输出文件传递到 ostream 参数中。 如果用户决定调用该函数并传入一个输出文件,比如“output.txt”,我该如何解释? 我如何获取用户传递给 SolveBoard 参数的输出文件,然后将其插入到 SolveBoardHelper 函数中,以便在解决板后写入该文件?
我之前的尝试包括我只是将一个预定的输出文件传递到参数中,但我不知道用户会选择输出到哪个文件:
void Boggle::SolveBoard(bool printBoard, ostream &output) {
string outputFile = "solve_output_test.txt"; // write to the already created solve_output_test.txt file
ofstream outFile(outputFile); // assign it to ofstream variable outFile
if(!outFile){
cout << "Error opening file" << endl; // file open check
}
string currPath;
for(int pos_x = 0; pos_x < BOARD_SIZE; pos_x++){
for(int pos_y = 0; pos_y < BOARD_SIZE; pos_y++)
SolveBoardHelper(print_or_not, pos_x, pos_y, BOARD_SIZE, BOARD_SIZE, outFile, numSteps, visited, currPath);
}
}
void Boggle::SolveBoard(bool printBoard, ostream &output) {
// remove the two lines below and just use `output` in the rest of the function:
//ofstream outputFile;
//outputFile(output);
for(int pos_x = 0; pos_x < BOARD_SIZE; pos_x++) {
for(int pos_y = 0; pos_y < BOARD_SIZE; pos_y++)
SolveBoardHelper(print_or_not, pos_x, pos_y, BOARD_SIZE, BOARD_SIZE, output,
numSteps, visited, currPath);
}
}
然后调用函数
SolveBoard(the_bool, std::cout);
或者
std::ofstream file("output.txt");
SolveBoard(the_bool, file);
您还需要重新定义SolveBoardHelper
以采用ostream
:
void Boggle::SolveBoardHelper(bool printBoard, int row, int column, int rowMax,
int columnMax, ostream& output, int numSteps,
int steps[4][4], string currPath)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.