gpt4 book ai didi

c++ - 如何从txt文件中读取迷宫并将其放入二维数组中

转载 作者:太空狗 更新时间:2023-10-29 21:16:39 24 4
gpt4 key购买 nike

我刚刚开始了一个小项目,它读取这样一个 txt 文件:

4
XSXX
X X
XX X
XXFX

所以我的问题是如何阅读此内容并将迷宫放入 C++ 中的二维字符数组。我尝试使用“getline”,但我只是让我的代码更复杂。您知道是否有解决此问题的简单方法?

char temp;
string line;
int counter = 0;
bool isOpened=false;
int size=0;

ifstream input(inputFile);//can read any file any name
// i will get it from user

if(input.is_open()){

if(!isOpened){
getline(input, line);//iterater over every line
size= atoi(line.c_str());//atoi: char to integer method.this is to generate the size of the matrix from the first line
}
isOpened = true;
char arr2[size][size];

while (getline(input, line))//while there are lines
{
for (int i = 0; i < size; i++)
{

arr2[counter][i]=line[i];//decides which character is declared

}
counter++;
}

最佳答案

您的错误是由于您试图声明一个大小为非常量表达式 的数组。

在您的例子中,size 表示数组中元素的数量,必须是 constant expression ,因为数组是静态内存块,其大小必须在程序运行之前的编译时确定。

要解决这个问题,您可以将数组保留为空括号,并且大小将根据您放置在其中的元素数量自动推导出来,或者你可以使用 std::stringstd::vector 然后读取 .txt 文件你可以这样写:

// open the input file
ifstream input(inputFile);

// check if stream successfully attached
if (!input) cerr << "Can't open input file\n";

string line;
int size = 0;

// read first line
getline(input, line);

stringstream ss(line);
ss >> size;

vector<string> labyrinth;

// reserve capacity
labyrinth.reserve(size);

// read file line by line
for (size_t i = 0; i < size; ++i) {

// read a line
getline(input, line);

// store in the vector
labyrinth.push_back(line);
}

// check if every character is S or F

// traverse all the lines
for (size_t i = 0; i < labyrinth.size(); ++i) {

// traverse each character of every line
for (size_t j = 0; j < labyrinth[i].size(); ++j) {

// check if F or S
if (labyrinth[i][j] == 'F' || labyrinth[i][j] == 'S') {

// labyrinth[i][j] is F or S
}

if (labyrinth[i][j] != 'F' || labyrinth[i][j] != 'S') {

// at least one char is not F or S
}
}
}

如你所见vector已经是“一种”2D char 数组,只是带有许多额外提供的设施,允许对其内容进行大量操作。

关于c++ - 如何从txt文件中读取迷宫并将其放入二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com