Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение из файла и вывод на консоль, чтение специальных слов.... 
:(
    Опции темы
DragoonFighter
Дата 22.2.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Лазил в гоогле но нечего не нашёл. В смысле нашёл много чего но не совсем понял подходит ли то что я нашёл к моей программе. Есть файл где находятся строчки. В каждой строчке несколько слов. Эти слова пишутся через запятую а по серединке этой строчки какой не будь знак. Например "=" . В программе есть функция srand(time(0))  которая генерирует число. Программа должна входить в файл со словами и выбрать строчку которой число соответствует с числом генерируемым srand(time(0)). При чтение строчки выводит только те слова которые идут до знака = и вводит их в string. Потом читает слова после нашего знака и вводит их в другой string. Вот теперь у нас два стринга, и при выводе cout << наш стринг; в консоли видно наши слова из файла. Главное чтобы слова до нашего знака были отлучены от слов после нашего знака.

Например:
Наш файл
german = немецкий                               //первая строчка
test = классная работа, тест
drugs, medezine = наркотики, ...           //третья строчка

Может кто помочь, если поняли что я имею в виду? За ранние спасибо! 

P.S.: Думаю мне для начала хватит пример функции для чтения из файла до знака и после знака а все остальное, я уже знаю как сделать, теоретически.
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
JackYF
Дата 23.2.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



DragoonFighter, считываешь построчно, затем ищем позицию "=", затем из входной строки генерируешь две подстроки. В чём проблема?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
DragoonFighter
Дата 24.2.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(JackYF @  23.2.2008,  00:16 Найти цитируемый пост)
считываешь построчно,


Да вот в этом моя проблема, я не знаю как это сделать, т.е. с какой функцией. Лазил в и-нете, нашёл много чего но не понял как мне это юзать. Можно пример считывание строк с файла?
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
xKOCMOCx
Дата 24.2.2008, 18:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.8.2007

Репутация: нет
Всего: нет



Цитата(DragoonFighter @ 24.2.2008,  16:37)
Цитата(JackYF @  23.2.2008,  00:16 Найти цитируемый пост)
считываешь построчно,


Да вот в этом моя проблема, я не знаю как это сделать, т.е. с какой функцией. Лазил в и-нете, нашёл много чего но не понял как мне это юзать. Можно пример считывание строк с файла?

юзай char *fgets(char *s, int n, FILE *stream);
PM MAIL   Вверх
DragoonFighter
Дата 24.2.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Нашёл. Понял как, вот пример: 

Код

FILE * pFile;
   char mystring [100];

   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else {
     fgets (mystring , 100, pFile);
     puts (mystring);
     fclose (pFile);
     }


Но есть одна проблема... он просто при задаче числа выбирает буквы с первого ряда. Можете привести полный пример где создаётся файл и из него при вводе цифры выводится на экран строка/слова с ряда под номером этой цифры, до знака "=", и тоже самое после нашего знака?  smile 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
bsa
Дата 24.2.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Примерно так:
Код
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>

typedef std::pair<std::string, std::string> KeyValue;
typedef std::vector<KeyValue> KeyValueVector;

int main()
{
    std::ifstream file("file.txt");
    KeyValueVector data;
    while(file.good()) {
        std::string str;
        std::getline(file, str);
        if (str.size()) {
            std::size_t pos = str.find_first_of('=');
            data.push_back( KeyValue(str.substr(0, pos), str.substr(pos+1)) );
        }
    }
    for(KeyValueVector::const_iterator i = data.begin(), end = data.end(); i != end; ++i)
        std::cout << i->first << " - " << i->second << std::endl;
    return 0;
}
Чтобы позиционироваться на нужную строку нужно перейти в начало файла, и считать n-1 строк. Или, если файл небольшой, то можно его весь считать в массив, а потом уже с ним и работать.
PM   Вверх
DragoonFighter
Дата 28.2.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Все работает, протестировал изучил но вот со считыванием n-1 строк не совсем понял что вы имеете в виду. 
(У меня 40 файлов в которых около 40-ка строк.)
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
DragoonFighter
Дата 29.2.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



 smile 
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.