fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cctype>
  4. #include <map>
  5. #include <cstring>
  6. #include <string>
  7. #include <algorithm>
  8.  
  9. int main(int argc, char* argv[])
  10. {
  11. setlocale(LC_ALL, "");
  12.  
  13. if (argc == 1)
  14. {
  15. std::cout << "Не введен аргумент командной строки!" << std::endl;
  16. return 1;
  17. }
  18. std::ifstream fin(argv[1]);
  19.  
  20. if (!fin.is_open())
  21. {
  22. std::cout << "Не удалось открыть файл!" << std::endl;
  23. return 1;
  24. }
  25.  
  26. std::string str;
  27.  
  28. const char *delimit = ".,!?1234567890-=+#% \t";
  29.  
  30. std::map<std::string, size_t> words;
  31.  
  32. while (std::getline(fin, str))
  33. {
  34. for (std::string::size_type pos = 0; (pos = str.find_first_not_of(delimit, pos)) != std::string::npos;)
  35. {
  36. std::string::size_type n = pos;
  37. pos = str.find_first_of(delimit, pos);
  38. std::string word = str.substr(n, pos == std::string::npos ? pos : pos - n);
  39.  
  40. for (char &c : word)
  41. c = std::tolower((unsigned char)c);
  42.  
  43. ++words[word];
  44. }
  45. }
  46. fin.close();
  47.  
  48. std::map<std::string, size_t>::iterator it;
  49. for (it = words.begin(); it != words.end(); ++it)
  50. {
  51. std::cout << (it->first.c_str()) << " - " << it->second << std::endl;
  52. }
  53.  
  54. return 0;
  55. }
Runtime error #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Не введен аргумент командной строки!