用C++从文本文件中读取坐标
Reading Co-ordinates from a Text File in C++
好的,所以我所要做的只是简单地从文本文件中读取一些坐标,并使用它们来绘制砖块阵列。我有这个代码:
ifstream infileScenario("scenario1.txt");
for (int i = 0; i < NUM_OF_BRICKS; i++)
{
// read brick coordinates
infileScenario >> bricks[i].m_x;
infileScenario >> bricks[i].m_y;
cout << bricks[i].m_x << " " << bricks[i].m_y << endl;
// set brick properties
bricks[i].m_height = 0.1;
bricks[i].m_width = 0.2;
bricks[i].life = 3;
}
infileScenario.close();
但我唯一被打印到控制台的是一堆0。我一遍又一遍地检查我的代码,还仔细检查了我的文本文件,但我仍然看不出哪里出了问题。
我的文本文件名为scenario1.txt,其内容为:
-0.6 0.7
-0.3 0.7
0 0.7
0.3 0.7
0.3 0.7
-0.6 0.5
-0.3 0.5
0 0.5
0.3 0.5
0.3 0.5
我在自己身上写下了这些价值观,如果我不得不冒险猜测,我会想是什么导致了我的问题。这可能与文本编码有关,还是我的想法错了?
我建议不要使用流类,它们更难检查错误,这里是使用fscanf转换的相同代码(带有错误检查(。
FILE *infileScenario;
int i;
if ((infileScenario = fopen("scenario1.txt", "r")) == NULL) //didnt open readonly
{
printf("Error, could not open scenario1.txtn");
exit(-1); //terminate program with a code we can read by running echo $?
}
for (i = 0; i < NUM_OF_BRICKS &&
fscanf(infileScenario, "%lf %lf",
&bricks[i].m_x, &bricks[i].m_y) != EOF;
i++)
{
// read brick coordinates
printf("%lf %lfn", bricks[i].m_x, bricks[i].m_y);
// set brick properties
bricks[i].m_height = 0.1;
bricks[i].m_width = 0.2;
bricks[i].life = 3;
}
fclose(infileScenario);
您也可以g++-g-o,然后gdb,并在gdb中运行以下程序:
b main
r
s
(each time the for loop hits bricks[u].life = 3, run)
p bricks[i]
(otherwise, keep running)
s
如果我的解决方案没有解决问题的话,这应该可以让你诊断出问题是什么。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- 两个'rare'矩阵的总和,读取为坐标 X、坐标 Y 和一个值
- c++ 从大型数组中读取 3D 坐标并计算它们之间的距离
- 如何使用c++在高维Mat:class中读取特定坐标下的数据
- 在没有2D阵列的情况下从矩阵文件中读取坐标
- 在c++中,我如何从文件x,y读取矩形的坐标
- 如何在 c++ 中从文件中读取坐标
- 读取 4 点的坐标.他们做一个正方形吗?
- 从特定坐标读取
- 使用c++从.txt中读取第三个坐标
- 将字节数组从位图图像读取到坐标X和Y中
- 用C++从文本文件中读取坐标