如何使用strtof endPointer?

时间:2014-12-28 12:58:12

标签: c++

查看各种谷歌搜索结果提供的示例,我真的不明白EndPtr是如何工作的。举个例子:

char szOrbits[] = "686.97 365.24";
char* pEnd;

float f1 = strtof (szOrbits, &pEnd);

该函数接受在char数组之后声明的指针的指针,这意味着指针的实际类型和内容是无关紧要的,并且保证指针在数组之后立即分配,从而使其地址为终点?

我尝试过这样使用它:

ret.push_back(EquationPiece(strtof(&Source[mark], (char**)&Source[i])));

其中ret是一个向量,Source是一个char数组,mark是数字开始的地方,i是数字之后的下一个字节,但是我得到了一些奇怪的结果。我的使用不正确还是应该在其他地方寻找错误?

1 个答案:

答案 0 :(得分:1)

虽然the reference page将参数pendptr描述为对char*对象的引用,但这可能是错误的。在C中我们只有指针,strtof的第二个参数是指向char的指针。

您可以利用此参数获取输入char数组中不能用于将char数组转换为输出float的点。如果指针指向' \ 0'比数组完全转换。如果它指向不同的东西,你可以开始错误处理或进一步处理char数组。

当你不确定它意味着什么时,你不应该施放任何指针。 Cast告诉编译器程序员更了解它。根据{{​​1}}的含义,传递endPtr可能很有用:

EquationPiece