Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环帮助:字符串向量到三维字符向量 我是C++新手,这是我第一次尝试3D向量。我试图获取一个长度可变的输入文件,如下所示: xxooo##xx xoxxxoxoo xxx#oxoo# oxxxoxoox xxoooo#xx xxxo#o### xxo#o#xxo x##oxxoox xxx##oxoo xoxx#xooo_C++_Loops_Vector_Multidimensional Array - Fatal编程技术网

循环帮助:字符串向量到三维字符向量 我是C++新手,这是我第一次尝试3D向量。我试图获取一个长度可变的输入文件,如下所示: xxooo##xx xoxxxoxoo xxx#oxoo# oxxxoxoox xxoooo#xx xxxo#o### xxo#o#xxo x##oxxoox xxx##oxoo xoxx#xooo

循环帮助:字符串向量到三维字符向量 我是C++新手,这是我第一次尝试3D向量。我试图获取一个长度可变的输入文件,如下所示: xxooo##xx xoxxxoxoo xxx#oxoo# oxxxoxoox xxoooo#xx xxxo#o### xxo#o#xxo x##oxxoox xxx##oxoo xoxx#xooo,c++,loops,vector,multidimensional-array,C++,Loops,Vector,Multidimensional Array,并将其转换为3D字符向量,其中每行是一个3x3框,前三个字符为第一行,后三个字符为第二行,最后三个字符为第三行。例如,输入的第一行应变成: x x o o o # # x x 这是我试图解决的问题,但我觉得我可能犯了几个错误: vector<vector<vector<char> > > makeBoard(vector<string> iflines) {// Function to fill game boards from input st

并将其转换为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;
}
矢量生成板(矢量iFline)
{//从输入字符串填充游戏板的函数
矢量字符板;
对于(int i=0;i!=iflines.size();i++)
{   
对于(int j=0;j<9;j=j+3)
{
charboard[i][j/3][0]=iFline[i][j];
charboard[i][j/3][1]=iFline[i][j+1];
charboard[i][j/3][2]=iFline[i][j+2];
}   
}
返回板;
}
有人能帮我吗


编辑:根据建议加上一些我试图修复的东西进行编辑。我得到错误:
分段错误:11
。当我尝试运行它时。

您正在使用
char
调用push\u 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;

我使用了一个向量,因为输入文件的大小是可变的,所以虽然框都是3x3,但我不知道我需要它来生成多少个。我将pushback更改为
=
,并将
k
更改为
j%3
,我发现了分段错误,所以我认为我如何设置它有问题,但我想不清楚
charboard[i][j/3][j%3] = iflines[i][j]