Загрузка...

C++ работа с файлом(БД)

Тема в разделе C/C++ создана пользователем lugenlord 5 июн 2018. 359 просмотров

Загрузка...
  1. lugenlord
    lugenlord Автор темы 5 июн 2018 20 11 мар 2017
    В общем, есть файл *txt и в нем имеются строки типо таких:
    Код

    27 января
    День воинской славы России. День снятия блокады города Ленинграда (1944г.)
    Ну, можно их в принципе поменять. Мне нужна такая программа, в которой я должен вписать дату или просто год, и программа будет искать совпадения со всего файла, а после выведет эту строку, где нашлось совпадение. Я понял то, что этот поиск можно осуществить посимвольно, либо как-то полностью что ли.
    Например: Я ввожу 1944 и прога выводит мне "День воинской славы России. День снятия блокады города Ленинграда (1944г.)". Ну примерно так +-. Делал по разному ничего не получается, что прога не видит в файле ничего, что она ничего не может в нем найти и все такое. Очень нужно, хоть какую-нибудь часть программы или приближенное
     
  2. MainShiro
    MainShiro 5 июн 2018 Заблокирован(а) 56 6 мар 2018
    Попробуй notepad++ :) Отпиши потом шо да как
     
  3. HideHard
    HideHard 5 июн 2018 Заблокирован(а) 11 17 июл 2017
    Регулярки
     
  4. lugenlord
    lugenlord Автор темы 5 июн 2018 20 11 мар 2017
    Изначально у меня была вот такая программа
    Код

    #include <fstream>
    #include <iostream>
    #include <string>
    #include <Windows.h>
    using namespace std;

    int main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    string buff, ent;

    while (true)
    {
    ifstream fin("D://Dev-Cpp//datt.txt");

    cout << "Enter date: "; getline(cin, ent);

    getline(fin, buff);

    while (ent != buff)
    {
    getline(fin, buff);
    }

    getline(fin, buff);
    cout << (buff) << "\n______________________________________________________________________________\n" << endl;

    fin.close();
    }





    system("pause");
    return 0;
    }
    В ней я вводил, например: 1 января и она выводила мне "1) Новый год. 2) Всемирный день мира. 3) Национальный день похмелья. 4) Манифест о введении всеобщей воинской повинности и Устав воинской повинности (1874г.)"
    В самом текстовом документе это выглядит так: "
    1 января
    1) Новый год. 2) Всемирный день мира. 3) Национальный день похмелья. 4) Манифест о введении всеобщей воинской повинности и Устав воинской повинности (1874г.)"
    Ну и все работает, но когда я захотел сделать, чтобы программа искала везде и выводила строчки, где есть совпадения, то все, ничего не выходит, я хз
     
  5. satan4
    satan4 5 июн 2018 46 тысяч в боте 31 30 апр 2018
    Изи
     
  6. lugenlord
    lugenlord Автор темы 5 июн 2018 20 11 мар 2017
    Да?
     
  7. swmf
    swmf 5 июн 2018 101 8 дек 2017
    это слишком ресурсозатратно
     
  8. swmf
    swmf 5 июн 2018 101 8 дек 2017
    короче, посимвольно ищешь дату, затем полностью копируешь следующую строку до символа \n и всё
     
  9. swmf
    swmf 5 июн 2018 101 8 дек 2017
    ой, у тебя там про год
     
  10. Masson_MIX
    Masson_MIX 5 июн 2018 Я даун :3 94 4 фев 2018
    Ctrl+F
     
  11. Help
    Help 5 июн 2018 469 12 май 2017
    Зачем использовать файл как бд ? Используй бд.
     
  12. Neloder
    Neloder 5 июн 2018 Проверяйте через лс 806 5 окт 2016
     
  13. lugenlord
    lugenlord Автор темы 6 июн 2018 20 11 мар 2017
    Код

    void word(int argc; CHAR* argv[] ; )
    {
    fstream File;
    string FileName = ("Файл") ;
    do {
    File.open(FileName,ios::in);
    if (File == NULL) {
    cout « "Ошибка! Возможно такого файла не существует! Повторите ввод:" « endl;
    }
    }
    while (File==NULL);
    vector<string> Text;
    int i=0;

    string s;
    while (getline(File, s)) { Text.push_back(s); }

    string word; int h=0;
    cout « "Введите слово: " « endl;
    cin » word;
    cout « word « "»: "«еndl;

    for (int j=0; j < Text.size(); j++)
    {
    istringstream is(Text[j]);
    while (is » s)
    if (s.find(word) != string::npos)
    {
    cout « Text[j] « endl;
    ++h;
    }

    }

    if (h==0) cout«"Строк со словом « "word" « "нет"«endl;
    system("pause");
    }
    Что здесь не так?)
     
Top