#c #lexicon
#c #словарь
Вопрос:
У меня есть file.txt Я хочу создать функцию на C , которая может читать слова в этом файле и печатать каждое слово и сколько раз они встречаются в file2.txt
Я провожу некоторое исследование, я знаю, что могу использовать анализатор и средство записи, а также класс map, любая помощь, пожалуйста?
bool Parser::hasMoreTokens() {
if(source.peek()!=NULL){
return true;
}
else{
return false;
}
}
Комментарии:
1. Шаг 1: Вы сначала предоставляете некоторый код
Ответ №1:
Это домашняя работа? Поищите в Интернете std::map
, std:string
std::ifstream
и std::ofstream
.
Ответ №2:
Прочитайте файл, используя ifstream, сохраните в map strings, используйте int
как значение map
и увеличивайте его каждый раз, когда вы сталкиваетесь с определенным string
. Затем запишите их в файл, используя ofstream.
Комментарии:
1. мне нужна помощь в реализации функции синтаксического анализа
2. что делает ваша функция синтаксического анализа?
3. это класс синтаксического анализа, который я должен внедрить, я хочу, чтобы класс синтаксического анализа мог обрабатывать операции ввода
4. использую ли я ifstream для чтения из файла, который я написал source.open(filename);
5. итак, у меня есть функции в parser.cpp который я должен реализовать
Ответ №3:
Если вы хотите быть эффективным и выполнить это за меньшее возможное количество строк, но используя стандартную библиотеку, попробуйте это:
#include <fstream>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
int main()
{
std::ifstream f("text.txt");
std::istream_iterator<std::string> eof;
std::multiset<std::string> words( std::istream_iterator<std::string>(f) , eof);
std::ofstream f_out("text_output.txt");
for( std::multiset<std::string>::iterator i = words.begin(); i!=words.end(); i = words.upper_bound(*i) )
f_out << "the word " << *i << " found " << words.count(*i) << " timesn";
}
Этот код захватывает файл с именем «text.txt «и выводит результат в «text_output.txt «
-
Содержимое «text.txt «:
могу ли я, могу ли я, могу ли я сделать это правильно?
Сколько раз мне нужно запрограммировать одну вещь, чтобы запомнить ее? -
Содержимое «text_output.txt «:
слово Как найдено в 1 раз
, слово, которое я нашел 4 раза,
слово может найдено 3 раза,
слово do найдено в 2 раза
, слово it? найдено 1 раз
слово many, найдено 1 раз
слово need, найдено 1 раз
слово one, найдено 1 раз
слово program, найдено 1 раз
слово правильно? найдено 1 раз
слово remember, найдено 1 раз
слово thing, найдено 1 раз
слово this, найдено 1 раз
, слово times найдено 1 раз
, слово to найдено 2 раза
Хорошим ресурсом для изучения фантастических способов эффективного использования c является книга под названием Accelerated c .
С уважением,