如何从方法的每个部分的变量中获取相同的数据?

时间:2012-02-22 09:40:46

标签: c++ arrays qt

我遇到了这个困境:使用下面的类似代码:

//floatArray[totalKeyPoints] declared just outside this loop
for(int d = 0; d < totalGroups; d++)
    {
        std::string STRING = "";
        QString lk = "test" + QString::number(d) + ".txt";
        std::string kl;
        kl = lk.toStdString();
        std::ifstream infile(kl.c_str());
        //std::cout << "FILEPATH: " << kl.c_str() << std::endl;

        int gl = 0;

        while(endFile != true)
        {
            endFile = infile.eof();
            getline(infile,STRING);
            if(STRING.empty() == false && endFile == false && gl < totalKeyPoints)
            {
                QString temp = STRING.c_str();
                QStringList temp1 = temp.split(" ");
                QString tmp = temp1[0];
                floatArray[gl].response = tmp.toFloat();
                tmp = temp1[1];
                floatArray[gl].angle = tmp.toFloat();
                tmp = temp1[2];
                floatArray[gl].size = tmp.toFloat();
                tmp = temp1[3];
                floatArray[gl].class_id = tmp.toInt();
                if(firstRun2 == true)
                    qDebug() << "A:"
                             << floatArray[gl].response 
                             << floatArray[gl].angle 
                             << floatArray[gl].size 
                             << floatArray[gl].class_id; //TAKE NOTE
                int xs = tmp.toInt();
                kpPerGroup[xs]++;
                gl++;
            }
        }

        infile.close();

        if(d < totalGroups)
        {
            endFile = false;
        }
    }

    for (int d = 0; d < totalKeyPoints; d++)
    {
        if(firstRun2 == true)
            qDebug() << "B:" 
                     << floatArray[d].response 
                     << floatArray[d].angle 
                     << floatArray[d].size << floatArray[d].class_id; //TAKE NOTE
    }

我已在此pastebin中记录了两个qDebug命令的输出:with A and B

为什么我会出现这种行为?有没有办法让我能够在整个代码中只有SET A值?

1 个答案:

答案 0 :(得分:3)

我猜你想要你的“A”调试输出实际上是:

 qDebug() << "A:" << floatArray[gl].response << floatArray[gl].angle << \ 
                     floatArray[gl].size << floatArray[gl].class_id;

对所有索引使用gl而不是d用于最后三个索引。在第一个循环中,索引d似乎与floatarray[]无关。充其量你会得到不正确的输出,最坏的情况是阵列溢出/崩溃。