Показать полную графическую версию : Аналог fgets() в WinApi
Всем привет
Есть ли в WinApi функция аналогичная fgets(), а то ReadFile() возращает то количество символов которе ей укажешь, не обрывая начала новой строки.
Спасибо зарание.
hasherfrog
28-04-2005, 21:24
Нет, насколько мне известно. ReadFile изначально заточена на буферизированный ввод, даже при отключении буфферизации там какая-то ерунда насчёт размера буфера (плохо помню). А почему Вы хотите обойтись без fgets? Это нормальная POSIX_стандартная функция.
hasherfrog
fgets() - работает с переменными типа FILE
char *fgets( char *string, int n, FILE *stream ); ,
а я работаю с файлом с помощью CreateFile().
hasherfrog
30-04-2005, 15:47
Насколько я могу судить, придётся писать всё самому.
Ну или попробовать поискать в гугле готовый текст.
Есть 2 решения - читать по байту (медленно), или
организовать буфферизированное чтение с разбивкой (муторно).
Вам решать. У меня готового текста нет. к сжл. Как-то не приходилось...
Спасибо, писать дык писать :)
Не понял в чём проблема? Уже написанным не хочется пользоваться? Если глубоко покопаться, то fgets() вконце-концов запускает ReadFile. То же самое могу сказать про istream<>. Можно, конечно, если хочется обойти использование FILE*, но сохранить способности istream<>, воспользоваться стандартными "твиками": определить класс, похожий на basic_streambuf<>, у которого virtual underflow() использует ReadFile и записать:
typedef basic_istream<char, my_streambuf<char> > winapi_istream;
Линкер выкинет всё, что не нужно, и в коде останется только простенький winapi_istream.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.