Если вы хотите быть эффективными и выполнить это в меньшем количестве строк, но используя стандартную библиотеку, попробуйте это:
#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) << " times\n";
}
Этот код захватывает файл с именем "text.txt" и выводитрезультат для "text_output.txt"
Содержимое "text.txt":
может может III сделать это правильно?
Сколько раз мне нужно запрограммировать одинвещь, чтобы помнить это?
Содержимое "text_output.txt":
слово Как найдено 1 раз
слово, которое я нашел 4 раза
слово может быть найдено 3 раза
слово найдено 2 раза
слово это?найдено 1 раз
найденное слово 1 раз
нужное слово найдено 1 раз
найденное слово 1 раз
программа слова найдена 1 раз
правильно ли слово?найдено 1 раз
слово запомнить найдено 1 раз
слово найдено 1 раз
слово найдено 1 раз
найдено слово 1 раз
найдено слово 2 раза
Хороший ресурс для изучения фантастических способов эффективного использования c ++ - книга под названием Accelerated c ++.
С уважением,