我一直在尝试从外部文件中读取字符,并将其放入类型为 char
的二维 vector 中。这些元素必须能够与某些值进行比较,以便导航“MazeSample.txt
”中给出的迷宫。
虽然我无法将字符放入 vector 中,但我能够使用 get
和 cout
函数读取和输出字符。
下面的代码试图以正确的格式读取 vector ,但最终出现错误:
//MazeSample.txt
SWWOW
OOOOW
WWWOW
WEOOW
//source.cpp
vector<vector<char>> maze;
ifstream mazeFile;
char token;
mazeFile.open("MazeSample.txt");
while (!mazeFile.eof()) {
mazeFile.get(token); //reads a single character, goes to next char after loop
for (int row = 0; row < maze.size(); row++) {
for (int column = 0; column < maze.at(row).size(); row++) {
maze.push_back(token);
}
}
//cout << token;
}
mazeFile.close();
对于“MazeSample.txt
”中提供的迷宫,我希望maze
vector 能够逐行读取每个字符,模仿迷宫样本的格式.
在上面的代码中,在 maze.push_back(token)
处出现错误:
“没有重载函数实例”std::vector<_Ty, _Alloc>::push_back...”匹配参数列表”
“参数类型是:(字符)”
“对象类型是:std::vector>, std::allocator>>>”
最佳答案
您正在插入 char
至 vector<vector<char>>
.你应该创建一个 vector<char>
, 插入 char
类型的值进去然后插入 vector<char>
至 vector<vector<char>> maze;
.这是您的程序的更正版本。它可以用简单的方式编写,但为了您的理解,我已在您的程序之上进行了更正。
vector<vector<char>> maze;
ifstream mazeFile;
string token;
mazeFile.open("MazeSample.txt");
while (!mazeFile.eof()) {
std::getline(mazeFile, token); //reads an entire line
//Copy characters in entire row to vector of char
vector<char> vecRow;
vecRow.assign(token.begin(), token.end());
//Push entire row of characters in a vector
maze.push_back(vecRow);
}
mazeFile.close();
关于c++ - 如何将文件中的字符放入二维 vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911999/