![]() |
Аналог fgets() в WinApi
Всем привет
Есть ли в WinApi функция аналогичная fgets(), а то ReadFile() возращает то количество символов которе ей укажешь, не обрывая начала новой строки. Спасибо зарание. |
Нет, насколько мне известно. ReadFile изначально заточена на буферизированный ввод, даже при отключении буфферизации там какая-то ерунда насчёт размера буфера (плохо помню). А почему Вы хотите обойтись без fgets? Это нормальная POSIX_стандартная функция.
|
hasherfrog
fgets() - работает с переменными типа FILE Код:
char *fgets( char *string, int n, FILE *stream ); а я работаю с файлом с помощью CreateFile(). |
Насколько я могу судить, придётся писать всё самому.
Ну или попробовать поискать в гугле готовый текст. Есть 2 решения - читать по байту (медленно), или организовать буфферизированное чтение с разбивкой (муторно). Вам решать. У меня готового текста нет. к сжл. Как-то не приходилось... |
Спасибо, писать дык писать :)
|
Не понял в чём проблема? Уже написанным не хочется пользоваться? Если глубоко покопаться, то fgets() вконце-концов запускает ReadFile. То же самое могу сказать про istream<>. Можно, конечно, если хочется обойти использование FILE*, но сохранить способности istream<>, воспользоваться стандартными "твиками": определить класс, похожий на basic_streambuf<>, у которого virtual underflow() использует ReadFile и записать:
typedef basic_istream<char, my_streambuf<char> > winapi_istream; Линкер выкинет всё, что не нужно, и в коде останется только простенький winapi_istream. |
Время: 06:11. |
Время: 06:11.
© OSzone.net 2001-