void getBaseCoord(string droneInfo, double& x, double& y, double& z){
// x= stod(droneInfo.substr(31, 3));
//y= stod(droneInfo.substr(34, 3));
// z= stod(droneInfo.substr(37, 3));
string strx, stry, strz;
strx = droneInfo.substr(31, 3);
stry = droneInfo.substr(34, 3);
strz = droneInfo.substr(37,3);
x = stof(strx);
y = stof(stry);
z = stof(strz);
上面是我正在为新手C ++课程进行的项目的摘录。我正在从输入文件中读取此字符串:
9673767892DroaninAlong4880021DO4.37.33.88.19.33.8U
注释掉的部分是出于功能操作的目的,试图将字符串行中的子字符串转换为双精度值。但是,我无法以这种方式转换它们,并且在编译时出现错误,说未声明
stod
(我想它认为它是变量?)在函数中将子字符串转换为双精度值的正确方法是什么?
最佳答案
不确定stod()是什么,但是强烈暗示C library strtod()
会执行该操作。
请注意,该函数采用两个参数,尽管第二个参数可能为NULL。第一个参数是C样式的字符串,因此可能需要转换:
void getBaseCoord(string droneInfo, double& x, double& y, double& z)
{
x = strtod(droneInfo.substr(31, 3).cstr(), NULL);
y = strtod(droneInfo.substr(34, 3).cstr(), NULL);
z = strtod(droneInfo.substr(37, 3).cstr(), NULL);
}