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

时间:2014-04-30 21:46:36

标签: c++ text-files coordinates file-io

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

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

我在自己写的这些价值观,如果我不得不冒险猜测,会想到可能导致我的问题的原因。它可能与文本编码有关,还是我错了想到这个?

1 个答案:

答案 0 :(得分:1)

我建议不要使用流类,检查错误会有点困难,这里使用fscanf进行相同的代码转换(带错误检查)。

FILE *infileScenario;
int i;

if ((infileScenario = fopen("scenario1.txt", "r")) == NULL) //didnt open readonly
{
    printf("Error, could not open scenario1.txt\n");
    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 %lf\n", 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

如果我的解决方案没有解决问题,那么应该允许您诊断问题似乎是什么。

相关问题