【发布时间】:2014-08-22 10:02:38
【问题描述】:
我有两种输入案例,我想使用相同的方法。 第一种情况是给定的参数是一个 std::string 包含我需要转换成 int 的三个数字:
std::string pointLine = "1 1 1";
第二种情况是给定参数是一个 std::string 包含三个“尚未双打”,我需要将其转换为双打:
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;
}
这适用于第一种情况,但不适用于应该转换为双精度的行。
所以我尝试了解决方案 Double split in 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;
}
【问题讨论】: