从txt文件行中获取多维数组
Get a multi dimensional array out of a txt file row
我有这个文本文件,其中包含与我的游戏地图相关的5
行。我想读取其中一行文本并将它们转换为二维bool
数组。我已经成功地读取了其他行,但是在最后一行,它的格式是这样的(原始行更长):
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
但无法找到一种有效的方法将其转换为二维bool
阵列。
我试过这个循环(它不工作,因为我相信我的地图格式):
for (int y = 0; y < this->map_height; y++)
{
for (int x = 0; x < this->map_width; x++)
{
char temp;
mapFile >> temp;
std::cout << temp;
if (temp == '0')
this->collisions[x][y] = false;
else if (temp == '2')
this->collisions[x][y] = true;
}
}
但由于我有,
在我的格式,我遇到了其他问题。
将整行读入字符串,将字符串放入std::istringstream
对象中,在循环中将数字(作为数字而不是字符)进行标记(使用std::getline
, ','
作为分隔符),并将数字放在矩阵中的正确位置。
这是一种方法
这是Joachim Pileborg的回答。您可以在std::getline
中直接使用逗号(','
)分隔符,以逗号分隔输入文件,然后使用istringstream
或简单地使用strtol
将单个元素解析为整数。比如:
for(int i=0; i<sizeof(ival)/sizeof(ival[0]); i++) {
for (int j=0; j<sizeof(ival[0])/sizeof(ival[0][0]); j++) {
std::getline(in, tok, ',');
ival[i][j] = strtol(tok.c_str(), NULL, 10);
}
}
如果您不反对更改输入文件,最简单的方法是从输入中删除所有的(,)。这将允许您在使用代码时基本保持不变。否则你就需要像前面提到的那样使用istringstream。或者作为字符串读取并删除每个字符串,然后转换为整数
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 使用指针从C++中的数组中获取最大值
- 获取字符串的长度并将其分配给数组
- 数组长度,为什么从命令行获取时不能使用它?
- 如何在 nlohmann 的 json 库中获取数组长度?
- 在c++中获取两个大int,并将它们存储在数组中
- 如何在C++中获取二维数组中最少的一列数?
- 从 numpy 数组获取指针以将图像发送到C++
- 指针数组.获取指针元素的值
- 循环以使用 cstring 数组 c++ 获取用户输入
- 一种从元组/数组获取参数包的方法
- 如何使用数组获取输入,并将其存储在record.h类的主类中的变量中
- 如何使用数组获取命令行参数
- 从 JSON 数组获取天气
- 布尔数组获取意外的默认值
- 填充列表<>使用数组获取错误的数字
- 如何在C++中为矢量数据结构中的二维数组获取用户输入,而不使用行和列上的两个for循环
- 在自定义库中操作2d C++数组-获取行数
- 使用数组获取测试结果
- 数组c++获取值