如何使用 sting 参数调用函数

how to call a function with sting arguments

本文关键字:调用 函数 参数 sting 何使用      更新时间:2023-10-16

我正在处理的代码面临问题。我想每次都写入一个.txt文件,假设满足一个条件。但是,当我运行附加了此特定代码的模拟时,不会创建任何文件。我想要你对函数定义和我如何称呼它的意见。以下是函数的定义:

void writeToTxt(const std::string filename, int dir, double XPosTargetlane, double accelcurrent, double accelfollower, double accelaftproj, double acceltoldfollowerafterlanechange, double acceltargetcurrent, double acceltarget, int targetLane, double VelMobil, double currTime, int id_veh){
char buffer[500];
int n;
FILE* fMobil = fopen(filename.c_str(), "a");
if (fMobil != NULL){
    //Initialize output file
    n = sprintf(buffer, "n   XPos  accelc  accelf  accela  accelto  acceltar  acceltarg  dir  tar  Vel   time    Polfact=1.0  Δath=1.0 ");
    fputs(buffer, fMobil);
    //Store converted value to buffer and append to output file
    n = sprintf(buffer, "n%.3ft", XPosTargetlane);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", accelcurrent);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", accelfollower);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", accelaftproj);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", acceltoldfollowerafterlanechange);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", acceltargetcurrent);          //an*
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", acceltarget);             //an
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3dt", dir);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3dt", targetLane);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", VelMobil);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "%.3ft", currTime);
    fputs(buffer, fMobil);
    n = sprintf(buffer, "n-----------------------------------------------------------------------------%d", id_veh);
    fputs(buffer, fMobil);
    fclose(fMobil);
}

}

我是这样称呼它的:

targetLane2 = numLane - 1;
    XPosTargetlane2 = vehicle->getPositionInTargetlane(vehicle->getPosition(0), targetLane2);
    vehicle->getUpDown(1, XPosTargetlane2, pVehUp, ShiftUp, pVehDw, ShiftDw);
    if ((simVehicleParticular *)vehicle->getRealLeader(temp) != NULL){
        accelcurrent2 = getIDMDeceleration((simVehicleParticular *)vehicle, (simVehicleParticular*)vehicle->getRealLeader(temp));    // ac
    }
    if ((simVehicleParticular *)vehicle->getRealFollower(temp) != NULL){
        accelfollower2 = getIDMDeceleration((simVehicleParticular *)vehicle->getRealFollower(temp), (simVehicleParticular *)vehicle);  //a0
    }
    if (pVehUp != NULL){
        accelaftproj2 = getIDMDeceleration((simVehicleParticular *)vehicle, (simVehicleParticular *)pVehUp);                  //ac*
    }
    if ((simVehicleParticular *)vehicle->getRealFollower(temp) != NULL){
        acceltoldfollowerafterlanechange2 = getIDMDeceleration((simVehicleParticular *)vehicle->getRealFollower(temp), (simVehicleParticular *)vehicle->getRealLeader(temp)); //a0*
    }
    if (pVehDw != NULL && pVehUp != NULL){
        acceltarget2 = getIDMDeceleration((simVehicleParticular*)pVehDw, (simVehicleParticular*)pVehUp);  //an
    }
    if (pVehDw != NULL){
        acceltargetcurrent2 = getIDMDeceleration((simVehicleParticular*)pVehDw, (simVehicleParticular*)vehicle);
    }

writeToTxt("Mobil114.txt", -1, XPosTargetlane2, accelcurrent2, accelfollower2, accelaftproj2, acceltoldfollowerafterlanechange2, acceltargetcurrent2, acceltarget2, targetLane2, VelMobil, currTime, id_veh);

你知道吗,为什么即使它正确构建,它也不会写入.txt文件?.我没有包含任何标题,因为没有意义。问题出在函数定义或我调用它时。谢谢。

首先,我会放置一些调试语句来确保代码实际上正在输入if语句(如 CompuChip 建议的那样)。

其次,如果输入代码,我会确保检查工作目录(正如Joachim Pileborg建议的那样),但文件可能正在创建,但可能不是您期望的位置。