Chcę zapewnić funkcję podobną do zakładki dla strumieni wyjściowych tekstu w C++. Ta funkcja powinna pozwolić mi powiedzieć "zanotuj tę pozycję", a następnie pozwól na wiele operacji wstawiania, a na koniec pozwól mi powiedzieć "dodaj tyle znaków wypełnienia, aby zakończyć postacie o jeden za pierwotnie zanotowaną pozycją".dlaczego cout.tellp zawsze zwraca -1?
Standardowy system iostream
wydaje się nie utrzymywać pozycji kolumny, ale pomyślałem, że mogę go sfałszować za pomocą tellp()
. Moje założenie było takie, że różnica między tellp()
w dwóch punktach w mojej sekwencji wyjściowej odpowiadałaby liczbie pośrednich bajtów.
Niestety, przynajmniej w moim środowisku Gnu C++, cout
nie utrzymuje fikcji pozycji strumienia. Każdy telefon cout.tellp()
zadzwoń pod numer returns -1
. Dlaczego?
'tellp' nigdy nie jest pozycja kolumny w każdym strumieniu. Ma to sens tylko w dostępnych strumieniach. –
@ R.MartinhoFernandes jest poprawny. 'tellp' ma ci powiedzieć, jaką wartość podać' seekp', aby powrócić do aktualnej pozycji. W tym przypadku mówi, że nie ma takiej możliwości. Entabbing musi być wspierany w inny sposób. –
Dziękuję wam obojgu. To był związek z szukaniem, którego nie udało mi się pojąć. –