як можна було б знайти певні слова в текстовому файлі в c ++

як я можу це зробити:

Отримано текстовий файл із назвою directorycontents.txt у цьому каталозіcontents.txt є купа тексту, кожен з яких - це ім'я файлу з розширенням імені файлу, я хочу, щоб він міг подібний до цього, якщо існує розширення файлу з певними символами, такими як .txt або .png потім виконайте fprintf (stderr, whateva);

Я подивився на istream і fstream і iostream, але їм насправді не береться, як використовувати fstream для цього

Дякую

5
Чи можете ви навести приклад? Частина з ".png .bat" мене плутає?
додано Автор Kiril Kirov, джерело
які речі я повинен шукати, щоб це зробити?
додано Автор NoobScratcher, джерело
отримав текстовий файл з ім'ям directorycontents.txt у цьому directorycontents.txt є купа тексту, кожен з них - це ім'я файлу із розширенням імені файлу, я хочу, щоб він міг подібний до цього, якщо існує розширення файлу з певними символами, такими як .txt або .png потім виконайте це :)
додано Автор NoobScratcher, джерело
Вам потрібно буде open read вмісту та search для ключових слів, які ви шукаєте.
додано Автор Alok Save, джерело
Насправді читайте хорошу книгу та читайте докладніше в обробки вводу/виводу
додано Автор Alok Save, джерело
Це дійсно повинно бути C ++? Ви врахували мови сценаріїв?
додано Автор Matt, джерело

2 Відповіді

Добре, я просто вкажу тобі в правильному напрямку, і я не буду публікувати кодекс, тому що вам потрібно це самостійно спробувати.

Перш за все читайте про читання файлів у C ++. Ви можете це зробити, і є багато інформації про це. Ви можете спробувати, наприклад, "як прочитати текстовий файл у C ++".

По-друге, віддайте перевагу використанню потоку та/або ifstream - це C ++ спосіб зробити це.

Then parse the file - you can read it word by word (using istream::operator>> ) , line by line (for example with getline ) into std::string (as you're talking about file names).

А потім аналіз введення - аналіз розібраного файлу та пошук конкретних слів у ньому - наприклад, std :: string має такі функції, як знайти - Я думаю, цього буде достатньо для вашої проблеми :)

Я сподіваюсь, що допомагає. Просто зауважте, що ми тут не пишемо код, ми просто допомагаємо знаходити рішення для вирішення проблем.

3
додано
Дуже ввічлива і повчальна відповідь. +1
додано Автор Didier Trosset, джерело
@NoobScratcher: Якщо ви "не знаєте, як читати", то, можливо, ви повинні спробувати вивчити це перше. ;-)
додано Автор Didier Trosset, джерело
Ніхто не вирішить вашу проблему для вас. І ніхто не буде писати код для вас тут. Отримайте книгу або попросіть десь ще. Якщо ви розмістите (в іншому питанні) якийсь код, про який ви намагалися писати, ми можемо допомогти. Інакше - ні.
додано Автор Kiril Kirov, джерело
@NoobScratcher - ви перебуваєте на неправильному місці, вибачте.
додано Автор Kiril Kirov, джерело
Мені потрібен код thats my problem я не знаю, як читати документацію і переробити те, що там просять без нього не працює або є дивним і дивним, і я ненавиджу, що потрібно дійсно думати про те, як це зробити, коли воно повинно бути там infront мого обличчя для Я теж це розумію і добре пояснюю
додано Автор NoobScratcher, джерело
ось проблема я не хочу робити все, що для однієї функції, і для кожної іншої функції, яка прийде після цього, її більше зусиль, і я ненавиджу погані емоції
додано Автор NoobScratcher, джерело

Ось щось подібне, подивіться на std :: fstreams . Виходячи з вашого неясного опису того, що ви намагаєтесь зробити, ви можете скористатися цією простий програмою як відправною точкою:

#include 
#include 
#include 
using namespace std;

void doSomething();
int main(int argc, char *argv[])
{
  if(argc < 2)
  {
    cout << "Usage: findsomething [filename]" << endl;
    return 1;
  }

  ifstream infile(argv[1], ifstream::in);
  if(!infile.is_open())
  {
    cout << "Couldn't open file " << argv[1] << endl;
    return 1;
  }

  string line;
  while(getline(infile, line))
  {
    if(line.find(".txt") != string::npos ||
       line.find(".png") != string::npos ||
       line.find(".bat") != string::npos)
    {
      doSomething();
    }
  }
}

Сподіваємося, цього достатньо, щоб ви почали працювати, і вам це не так важко прочитати.

0
додано
Psst, не робіть цього, будь ласка.
додано Автор Kiril Kirov, джерело
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147