Я пока предположу, что вы определили
vector<string> argv;
и как-то его инициализировали.
string::data
не делает то, что вы, кажется, хотите. На самом деле, это почти ничего не делает. Он просто возвращает константный указатель на версию строки, , которая не обязательно заканчивается нулем.
Чтобы сравнить string
с символьным литералом, просто используйте ==
.
Чтобы передать string
функции C, используйте string::c_str
.
И вы помещаете дробное число в int
.
double pLat = ( // use a floating-point type
(argv[6] == "plus" ? 1 : -1) // compare string using ==
* ( atoi(argv[7].c_str()) // get C string using c_str
+ atoi(argv[8].c_str()) / 60.
+ atoi(argv[9].c_str()) / 36000.)
* 2.145767 * 0.0001);