我需要读取浮动文件并将其推送到我的矢量中。我可以通过使用临时浮点数来让他工作,但是我现在没有尝试。将文件流式传输到矢量<float> with copy + back_inserter
出于某种原因,以下内容不起作用。
std::ifstream fileHandle(filename);
std::vector<float> vect;
std::string id;
while (!fileHandle.eof()){
fileHandle >> id;
std::copy(std::istream_iterator<float>(fileHandle),
std::istream_iterator<float>(),
std::back_inserter(vect));
std::copy(std::istream_iterator<float>(fileHandle),
std::istream_iterator<float>(),
std::back_inserter(vect));
std::copy(std::istream_iterator<float>(fileHandle),
std::istream_iterator<float>(),
std::back_inserter(vect));
}
与看起来像
v 0.000000 0.000000 1.000000
v 1.000000 0.000000 1.000000
...
调试它一个文件,它似乎在第一copy
呼叫推动花车(整行)到载体。这实际上很好,除了它似乎冻结我的文件迭代器在下一行的'v'。 fileHandle >> id;
行和copy
调用不会将文件迭代器从该点向前移动,从而创建无限循环。仅使用1 copy
调用创建了相同的结果。
我在做什么错?
哦,这就是拷贝线是如何工作的。 – slicedtoad 2013-05-10 19:00:08
感谢您的帮助,评论非常有用。我实际上使用虚拟字符作为通过switch语句的标识符,但我想我可以弄清楚如何进行适当的更改。 – slicedtoad 2013-05-10 19:12:27
你可以用所需的行为增加“结构”,并把所有的逻辑放在“操作员>>”中 - 你首先阅读“dummy”(你可以称之为“flag”,或者不是虚拟的东西),而“标记“每个条目。 – Escualo 2013-05-10 19:16:54