循环帮助:字符串向量到三维字符向量
Loop help: string vector to 3D char vector
我是C++的新手,这是我第一次尝试3D矢量。我正在尝试一个可变长度的输入文件,如下所示:
xxooo##xx
xoxxxoxoo
xxx#oxoo#
oxxxoxoox
xxoooo#xx
xxxo#o###
xxo#o#xxo
x##oxxoox
xxx##oxoo
xoxx#xooo
并将其转换为3D字符向量,其中每一行都是一个3x3的框,前三个字符是第一行,后三个是第二行,后一个是第三行。例如,输入的第一行应该变成这样:
x x o
o o #
# x x
这是我尝试的解决方案,但我觉得我可能犯了几个错误:
vector<vector<vector<char> > > makeBoard(vector<string> iflines)
{// Function to fill game boards from input strings
vector<vector<vector<char> > > charboard;
for (int i = 0; i != iflines.size(); i++)
{
for (int j = 0; j < 9; j=j+3)
{
charboard[i][j/3][0] = iflines[i][j];
charboard[i][j/3][1] = iflines[i][j+1];
charboard[i][j/3][2] = iflines[i][j+2];
}
}
return charboard;
}
有人能帮我一下吗?
编辑:根据建议加上我试图解决的一些问题进行编辑。我得到错误:Segmentation fault: 11
。当我尝试运行它时。
您正在char
上调用push_back。你需要做
charboard[i][j/3][k] = iflines[i][j]
由于您使用的是固定的3x3阵列,因此不需要对内部组件使用std::vector
。std:array
就足够了,类似
using GameBoard = std::array<std::array<char, 3>, 3>;
vector<GameBoard> charboard;
此外,你不需要使用if/else来计算k
,还有一个模%
算子,它可以产生除法的余数,所以它非常适合你的情况:
charboard[i][j/3][j%3] = iflines[i][j]
相关文章:
- 检查向量是否具有所有可能的字符组合
- 将转换字符键入 int 以用作向量C++的索引
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- C++ - 使用基于范围的 for 循环将字符值分配给向量中的字符串不会分配值
- 将字符向量复制到另一个向量
- C++如何将字符数组转换为字节向量(向量<byte>)
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将整数向量值插入字符向量
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 如何使用istream_iterator将无符号字符向量转换为字符串?
- C++ 获取向量中常量字符* [ ] 的长度
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 将字符向量转换为单个字符串
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 拆分字符数组并存储为向量
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 快速将无符号字符的向量强制转换为POD结构的向量,反之亦然
- 向量(字符):核心转储
- 如何将向量<字符*>转换为向量<string>/字符串