fork download
  1. #include <string>
  2. #include <iostream>
  3. #include <cstddef>
  4. #include <memory>
  5. #include <utility>
  6.  
  7. std::unique_ptr<int[]> count_char(const std::string& s)
  8. {
  9. // consider 128 ASCII decimal and their coresponding character codes
  10. std::unique_ptr<int[]> charASCIIArray = std::unique_ptr<int[]>(new int[128]{0});
  11. for (const auto& it : s)
  12. {
  13. if (('A' <= it && it <= 'Z') || // if char between (A,B,....,Z) or
  14. ('a' <= it && it <= 'z')) // between (a,b,....,z)
  15. charASCIIArray[static_cast<int>(it)]++; // we count each corresponding array then
  16. }
  17. return std::move(charASCIIArray);
  18. }
  19.  
  20. int main()
  21. {
  22. std::string userinput = "random words WITH *- aLl";
  23.  
  24. std::unique_ptr<int[]> charASCIIArray = count_char(userinput);
  25. for (std::size_t index = 0; index < 128; ++index)
  26. if (charASCIIArray[index] != 0)
  27. std::cout << "Letter " << static_cast<char>(index) // convert back to char
  28. << " occured " << charASCIIArray[index] << " times.\n";
  29.  
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
Letter H occured 1 times.
Letter I occured 1 times.
Letter L occured 1 times.
Letter T occured 1 times.
Letter W occured 1 times.
Letter a occured 2 times.
Letter d occured 2 times.
Letter l occured 1 times.
Letter m occured 1 times.
Letter n occured 1 times.
Letter o occured 2 times.
Letter r occured 2 times.
Letter s occured 1 times.
Letter w occured 1 times.