【发布时间】:2012-06-25 08:30:38
【问题描述】:
我想为 C++ 文本输出流提供类似选项卡的功能。该功能应该允许我说“注意这个位置”,然后允许多次插入操作,最后允许我说“添加足够的填充字符,以便结束 N 字符超过最初记录的位置”。
标准的iostream 系统似乎没有保持列位置,但我认为我可以使用tellp() 来伪造它。我的假设是,tellp() 在我的输出序列中的两个点之间的差异将对应于中间字节的数量。
不幸的是,至少在我的 Gnu C++ 环境中,cout 不保持流位置的虚构。每个cout.tellp() 拨打returns -1。这是为什么呢?
【问题讨论】:
-
tellp绝不是任何流中的列位置。它仅在可搜索的流中有意义。 -
@R.MartinhoFernandes 是正确的。
tellp应该告诉您要向seekp提供什么值才能回到当前位置。在这种情况下,它告诉你没有这种可能性。必须以其他方式支持 Entabbing。 -
谢谢你们。这是我没能掌握的与 seekp 的关系。