0
#include <stdlib.h>
....
double returnDistance(string coord1, string coord2, const vector<string> vec) {
    int arr1[11], arr2[11];
    istringstream iss1(coord1);
    int i = 0;
    while(iss1) {
        iss1 >> arr1[i];
        i++;
    }
    istringstream iss2(coord2);
    i = 0;
    while(iss2) {
            iss2 >> arr2[i];
            i++;
    }
    //error below when calling atof
    return calculateDistance(atof(arr1[6]), atof(arr2[6]),
                             atof(arr1[7]), atof(arr2[7]),
                             atof(arr1[8]), atof(arr2[8]))
}

arr1[] と arr2[] はどちらも文字列の配列で、calculateDistance は x、y、z 座標を指定して 3 次元距離を計算しますが、何らかの理由で「'atof' の呼び出しに一致する関数がありません」というエラーが発生します。助けてください!

PS: .c_str() を使用しようとすると、次のエラーが表示されます: 「メンバー参照ベース型 'int' は構造体または共用体ではありません」

4

2 に答える 2

2

コードの目的が理解できたら、次のように更新してください。

double arr1[11], arr2[11];
...
return calculateDistance(arr1[6], arr2[6],
                         arr1[7], arr2[7],
                         arr1[8], arr2[8]);

基本的に、それぞれarr?[?]はすでに float であり、string->float 変換は>>オペレーターによって行われます。

于 2013-11-10T01:19:08.783 に答える