我有std::vector<std::string> WorldData
.它包含我名为 world.txt 的文件的每一行(有 opengl 3d 坐标),它看起来像:
-3.0 0.0 -3.0 0.0 6.0
-3.0 0.0 3.0 0.0 0.0
3.0 0.0 3.0 6.0 0.0 etc.
如何将这些字符串转换为浮点变量? 当我尝试时:
scanf(WorldData[i].c_str(), "%f %f %f %f %f", &x, &y, &z, &tX, &tY);
or
scanf(WorldData[i].c_str(), "%f %f %f %f %f\n", &x, &y, &z, &tX, &tY);
变量 x, y, z, tX, tY 得到一些奇怪的数字。
最佳答案
我不是从文件读入 vector ,然后从 vector 读入坐标,而是直接从文件读入坐标:
struct coord {
double x, y, z, tX, tY;
};
std::istream &operator>>(std::istream &is, coord &c) {
return is >> c.x >> c.y >> c.z >> c.tX >> c.tY;
}
然后您可以使用 istream_iterator
创建一个坐标 vector :
std::ifstream in("world.txt");
// initialize vector of coords from file:
std::vector<coord> coords((std::istream_iterator<coord>(in)),
std::istream_iterator<coord>());
关于c++ - 从文件到 float 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391981/