gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:30 30 4
gpt4 key购买 nike

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

标准的 iostream 系统似乎没有维护列位置,但我认为我可以使用 tellp() 来伪造它。我的假设是输出序列中两点处的 tellp() 之间的差异对应于中间字节数。

不幸的是,至少在我的 Gnu C++ 环境中,cout 不维护流位置的虚构。每次 cout.tellp() 调用都返回 -1。这是为什么?

最佳答案

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

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

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

一般情况下,屏幕不是流。就此而言,键盘也不是:)

关于c++ - 为什么 cout.tellp 总是返回 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166398/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com