查看各种谷歌搜索结果提供的示例,我真的不明白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是数字之后的下一个字节,但是我得到了一些奇怪的结果。我的使用不正确还是应该在其他地方寻找错误?
答案 0 :(得分:1)
虽然the reference page将参数pendptr
描述为对char*
对象的引用,但这可能是错误的。在C中我们只有指针,strtof
的第二个参数是指向char的指针。
您可以利用此参数获取输入char数组中不能用于将char数组转换为输出float的点。如果指针指向' \ 0'比数组完全转换。如果它指向不同的东西,你可以开始错误处理或进一步处理char数组。
当你不确定它意味着什么时,你不应该施放任何指针。 Cast告诉编译器程序员更了解它。根据{{1}}的含义,传递endPtr可能很有用:
EquationPiece