簡體   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