将迭代器作为参数传递时奇怪的迭代器递增

时间:2018-04-26 11:45:09

标签: c++ iterator arguments increment

我立即为我可怕的英语道歉:D

对于我的项目,我需要分析obj文件。我逐行读取文件并使用正则表达式从特定字符串中选择数据。

regex regCoord("-?\\d+\.?\\d*");
sregex_iterator a(line.begin(), line.end(), regCoord);

我确定已找到3场比赛,我想马上使用它们。例如,输出到控制台或保存到结构

cout << line << endl;
cout << a++->str() << " " << a++->str() << " " << a->str() << endl;

但在这种情况下,递增以相反的顺序从左到右发生!并且在输出中我得不到(第1个元素,第2个元素,第3个元素),但是(第2个元素,第1个元素,第1个元素)。如果我将所有三个元素都传递给结构构造函数,就会出现类似的问题。

Output:
v 0.151164 0.014830 -0.051720
0.014830 0.151164 0.151164

但如果我循环遍历元素或以三行写输出,结果将看起来正常。同样,如果我在不使用构造函数的情况下填充结构,并分别写入每个字段。

cout << a++->str() << " ";
cout << a++->str() << " ";
cout << a->str() << endl;

Output:
v 0.151164 0.014830 -0.051720
0.151164 0.014830 -0.051720

为什么会有这么奇怪的倒置参数处理?我使用的是Visual Studio 2017

0 个答案:

没有答案