c++ - 如何将文件中的字符放入二维 vector 中?

标签 c++ c++11 file-io 2d-vector

我一直在尝试从外部文件中读取字符,并将其放入类型为 char 的二维 vector 中。这些元素必须能够与某些值进行比较,以便导航“MazeSample.txt”中给出的迷宫。

虽然我无法将字符放入 vector 中,但我能够使用 getcout 函数读取和输出字符。 下面的代码试图以正确的格式读取 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>>>”

最佳答案

您正在插入 charvector<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/

相关文章:

c++ - 重载可变参数函数,返回类型取决于参数数量

c++ - 在运行时修改 exe 字节以使文件 MD5 与上次运行时唯一

c++ - 是否在空的初始化程序列表(并明确指定类型)上调用 std::min 未定义的行为?

c++ - 如何使用 boost::spirit::qi 和 std::vector<token_type> 而不是 std::string

c - 如何从文本文件中读取最小/最大变量?

python - Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

java - 部分读取xml文件

c++ - 如何通过调整窗口大小来扩展小部件?

c++ - Stack 的链表实现

c++ - QX11EmbedContainer 和 QProcess 问题