我有两个输入情况,想要使用同一个方法来处理。 第一个情况是给定的参数是一个包含三位数字的std::string,我需要将其转换为int类型:
std::string pointLine = "1 1 1";
第二种情况是给定的参数是一个std::string,其中包含三个“尚未转换为double”的值,我需要将它们转换为double。
std::string pointLine = "1.23 23.456 3.4567"
我写了以下方法:
std::vector<double> getVertexIndices(std::string pointLine) {
vector<int> vertVec;
vertVec.push_back((int) pointLine.at(0));
vertVec.push_back((int) pointLine.at(2));
vertVec.push_back((int) pointLine.at(4));
return vertVec;
对于第一种情况,这样做很好,但是把一行转换成双精度浮点数时就不行了。
所以我尝试了 C语言中的双精度浮点数分割 的解决方案。我知道我的分隔符是空格。
目前我想到的代码如下,但是在调用以下方法后程序会崩溃:
std::vector<double> getVertexIndices(std::string pointLine) {
vector<double> vertVec;
char * result = std::strtok(const_cast<char*>(pointLine.c_str()), " ");
while(result != NULL ) {
double vert = atof (result);
vertVec.push_back(vert);
char * result = std::strtok(NULL, " ");
}
return vertVec;
}