用C++从文本文件中读取坐标

Reading Co-ordinates from a Text File in C++

本文关键字:读取 坐标 文件 文本 C++      更新时间:2023-10-16

好的,所以我所要做的只是简单地从文本文件中读取一些坐标,并使用它们来绘制砖块阵列。我有这个代码:

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

如果我的解决方案没有解决问题的话,这应该可以让你诊断出问题是什么。