Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C++ Чтение файла построчно,хелп.  (Прочитано 13915 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
catsfoot
Новенький

ru
Offline Offline

« : 08-11-2011 10:16 » new

Подскажите нубу, с помощью какой функции можно считывать файл построчно? мне нужно написать программу которая будет находить файлы по маске. А в дальнейшем отбирать файлы с определенной строкой. С поиском по маске я разобрался, а вот как считывать построчно каждую строку не могу... было бы здорово если бы  кто-нибудь привел примеры. Может есть еще какой-нибудь способ реализовать данную задачу?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 08-11-2011 10:31 » 

Посмотри std::ifstream и ф-ю getline.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
catsfoot
Новенький

ru
Offline Offline

« Ответ #2 : 15-11-2011 07:44 » 

Посмотри std::ifstream и ф-ю getline.

Спасибо. но разобравшись понял что мне будет лучше искать в файле по словам ... не могли бы подсказать как это реальзовать ?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 15-11-2011 08:07 » 

catsfoot, ты сперва строку получи, а потом уже в ней слова будешь искать.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
catsfoot
Новенький

ru
Offline Offline

« Ответ #4 : 25-11-2011 09:37 » 

Таааккс )) у меня возникла новая проблема, моя группа файлов в кодировке UTF-8 без BOM... соответственно при чтение русскоязычного текста отображается краказябра. Как можно прочитать файл в этой кодировки? занимаясь этим вопросом наткнулся на функцию MultiByteToWideChar ... но так и не смог разобраться в ней ... в общем хелп... кто чем может люди добрые )) и еще такой вопрос если я буду искать определенное слово то он найдет его в файле с кодировкой в UTF-8, без каких либо средств или нет ?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-11-2011 11:24 » 

По поводу MultiByteToWideChar - поищи по форуму. Например, вот: https://forum.shelek.ru/index.php/topic,6482.0.html
Ну, и внимательное чтение MSDN никто не отменял.

Что касается поиска в utf-8, то чисто теоретически, можешь utf-8-текст поместить в массив обычных char, и искать в нём всякими strstr (или string::find), конвертируя образцы поиска в utf-8. Только вопрос конвертации это не снимает Улыбаюсь Ну, и поиск без учёта регистра так не сделаешь.
« Последнее редактирование: 25-11-2011 11:27 от Вад » Записан
catsfoot
Новенький

ru
Offline Offline

« Ответ #6 : 28-11-2011 06:22 » 

Спасибо за наводку... буду разбираться.

Добавлено через 9 дней, 3 часа, 55 минут и 32 секунды:
Хелп, люди добрые.  с кодировкой я разобрался ... теперь мне нужно прочитать файлы которые я нашел в директории по маске. Как это осуществить?
Вот написал поиск текста в файле к которому указываешь путь:
Код:
setlocale(LC_ALL,"russian");
char count=0;
wchar_t nomer_str[10000];
    FILE* log_file;
    FILE* result_file;
    wchar_t current_str[10000];

if(!(log_file = _wfopen(L"c:\\test\\123\\log1.log", L"rt, ccs=UTF-8")))
    {
        printf("Open log_file failed.\n");
_getch();
        return 0;
    }

result_file=fopen("c:\\test\\123\\res.txt", "w");

    fin: while(!(feof(log_file)))
    {
        fgetws(current_str, 10000, log_file);


        if (ferror(log_file))
        {
            printf("error");
            return 0;
        }


        if (((wcsstr (current_str,L"Слово1"))!=NULL)&&((wcsstr (current_str,L"Слово2"))!=NULL))
        {

            fputws(current_str, stdout);
            fputws(current_str, result_file);

        }

    }

А как искать в тех файлах которые я нашел ?

« Последнее редактирование: 07-12-2011 10:18 от catsfoot » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines