Здравствуйте, ·, Вы писали:
·>Да, верно. Вместо того, чтобы сочинять кусок кода на десяток строк, в каждой из которой можно выстрелить себе в ногу, лучше иметь одну, надёжную, отлаженную, проверенную, в стандарте. В этом и есть мой поинт. согласен
pos_type tellg();
38 Effects: Behaves as an unformatted input function (as described above), except that it does not count the number of characters extracted and does not affect the value returned by subsequent calls to gcount().
39 Returns: After constructing a sentry object, if fail() != false, returns pos_type(-1) to indicate failure.
Otherwise, returns rdbuf()->pubseekoff(0, cur, in).
И специально для тебя, имбецила, добавил дополнительную печать, чтоб тебе виднее было, чему равно fail() и чему равно tellg():
Здравствуйте, rg45, Вы писали:
R>·>Теплее. Осталось разобраться что возвращает pubseekoff. R>Ну, так что тебе мешает? Недостаток мозга, или что?
pos_type seekoff(off_type off, ios_base::seekdir way,
ios_base::openmode which
= ios_base::in | ios_base::out);
3 Effects: Alters the stream positions within one or more of the controlled sequences in a way that is defined separately for each class derived from basic_streambuf in this Clause ([stringbuf.virtuals], [filebuf.virtuals]).
4 Default behavior: Returns pos_type(off_type(-1)).
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[43]: Как в одну строку кода прочитать содержимое файла в
Здравствуйте, ·, Вы писали:
·>Здравствуйте, rg45, Вы писали:
R>>·>Теплее. Осталось разобраться что возвращает pubseekoff. R>>Ну, так что тебе мешает? Недостаток мозга, или что? ·>
·>pos_type seekoff(off_type off, ios_base::seekdir way,
·> ios_base::openmode which
·> = ios_base::in | ios_base::out);
·>3 Effects: Alters the stream positions within one or more of the controlled sequences in a way that is defined separately for each class derived from basic_streambuf in this Clause ([stringbuf.virtuals], [filebuf.virtuals]).
·>4 Default behavior: Returns pos_type(off_type(-1)).
Ну и что ты мне тут тычешь. Какое тут нах Default behavior?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: Как в одну строку кода прочитать содержимое файла в массив?
Здравствуйте, rudzuk, Вы писали:
R>Здравствуйте, andyp, Вы писали:
a>> K>есть ли в std аналог File.ReadAllBytes()?
a>> Кто б еще пояснил, зачем эта муть в стандарте вообще нужна.
R>Потому что, как показал данный топик, правильно написать загрузку целого файла в память могут не только лишь все
Именно. Более того решение этой задачи штатными средствами библиотеки не всегда возможо, а в большинстве случаев требует использования нативных АПИ ос.
Поэтому оно и должно быть стандартной функцией библиотеки скрывающей под капотом нативную реализацию.
Чтобы не было специальных олимпиад с классами буфферизированного ввода как в этом треде.
Re[43]: Как в одну строку кода прочитать содержимое файла в
Здравствуйте, ·, Вы писали:
R>>Ну, так что тебе мешает? Недостаток мозга, или что? ·>
·>pos_type seekoff(off_type off, ios_base::seekdir way,
·> ios_base::openmode which
·> = ios_base::in | ios_base::out);
·>3 Effects: Alters the stream positions within one or more of the controlled sequences in a way that is defined separately for each class derived from basic_streambuf in this Clause ([stringbuf.virtuals], [filebuf.virtuals]).
·>4 Default behavior: Returns pos_type(off_type(-1)).
Нихера твой tellg() не возвращает ни pos_type(-1), ни pos_type(off_type(-1)) в этом случае. А вместо этого возвращает максимальное знаковое положительное число. Нужно разжевывать, что это означает, или сам выводы сделаешь?
Ну куда ты лезешь других поучать? Тебе нужно заткнуться, слушать и учиться.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
r> Нихера твой tellg() не возвращает ни pos_type(-1)
Скорее всего это значит
tellg does not report the size of the file, nor the offset from the beginning in bytes. It reports a token value which can later be used to seek to the same place, and nothing more.
Здравствуйте, ·, Вы писали:
·>Т.е. дёргать tellg и надеятся, что оно вернёт что-то относящееся к размеру файла в общем случае нельзя.
Очень даже можно. А баги бывают везде — и в платформах, и в компиляторах. Для этого придумали такую чудесную штуку как баг репорты. Ну ты не слыхал, наверное.
·>В общем, возьми код в jdk и перепиши, я тебе сразу показал правильное решение, неясно зачем из себя мачо строишь.
Ступай-ка ты с миром. Вместе со своей jdk (для умственно неполноценных). Пока я тебя не послал куда-нибудь подальше.
--
Не можешь достичь желаемого — пожелай достигнутого.