繁体   English   中英

为什么cout.tellp总是返回-1?

[英]why does cout.tellp always return -1?

我想为C ++文本输出流提供类似标签的功能。 该功能应该允许我说“注意这个位置”,然后允许多个插入操作,最后允许我说“添加足够的填充字符,以便在最初指出的位置之后结束N字符”。

标准的iostream系统似乎没有保持列位置,但我原以为我可以使用tellp()伪造它。 我的假设是,输出序列中两点的tellp()之间的差异将对应于插入字节的数量。

不幸的是,至少在我的Gnu C ++环境中, cout并没有保持流位置的虚构。 每个cout.tellp()调用都returns -1 这是为什么?

tellp返回流中的位置,以便您可以查找它。 控制台不允许搜索。 此外,即使您将位置解释为“自创建以来写入流的字节数”,该数字对于光标定位也没有任何用处 - 屏幕环绕,其宽度通常是不可预测的。 您只是不知道您所在的列,因为行长度是可变的。

如果您想在屏幕上进行合理的光标定位,请查看随附的ANSI终端规范和转义命令。 它们允许光标位置发现和放置。

http://ascii-table.com/ansi-escape-sequences.php

通常,屏幕不是流。 也不是键盘,就此而言:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM