【发布时间】:2024-01-12 05:17:01
【问题描述】:
我正在处理一些文件并尝试加载它们。我想用一个向量来存储最终的信息,这样我就可以在全局范围内保存它而无需知道它有多大。这是我的代码,但程序没有完成启动:
std::string one = "v 100.32 12321.232 3232.6542";
struct Face {float x, y, z;};
std::vector<struct Face> obj;
char space[3];
sscanf(one.c_str(), "%s %f %f %f", space, &obj[1].x1, &obj[1].y1, &obj[1].z1);
std::cout << obj[1].x1 << std::endl;
【问题讨论】:
-
您缺少
main和obj[whatever]是非法的,因为最初,正如代码所示,向量是空的。 -
@LuchianGrigore 但是 sscanf 不会在向量中添加一些东西吗?
-
不,当然不是。您要么需要
resize,使用构造函数给出初始大小,要么使用push_back。 -
不。
operator []仅供访问 - 它永远不会增加vector的大小。 -
@BlueSpud:
map在这方面与vector的工作方式不同,顺便说一句...map::operator[]实际上会创建不存在的元素。