fork download
  1. #include <map>
  2. #include <iostream>
  3.  
  4. bool is_printable(char ch)
  5. {
  6. return ch >= 32 && ch <= 126;
  7. }
  8.  
  9. int main()
  10. {
  11. std::map<char, unsigned> printable_count;
  12.  
  13. unsigned characters_processed = 0;
  14. char ch;
  15. while (std::cin.get(ch))
  16. {
  17. ++characters_processed;
  18.  
  19. if (is_printable(ch))
  20. ++printable_count[ch];
  21. }
  22.  
  23. unsigned printable_characters = 0;
  24.  
  25. for (auto count : printable_count)
  26. {
  27. printable_characters += count.second;
  28. std::cout << count.first << ": " << count.second << '\n';
  29. }
  30.  
  31. std::cout << "Of " << characters_processed << ", ";
  32. std::cout << printable_characters << " were printable.\n";
  33. }
Success #stdin #stdout 0s 3436KB
stdin
Mary had a little lamb
Its fleece was white as Γαsnow
and everywhere╙ that Mary went
the lamb was sure to go.
stdout
 : 18
.: 1
I: 1
M: 2
a: 11
b: 2
c: 1
d: 2
e: 12
f: 1
g: 1
h: 5
i: 2
l: 5
m: 2
n: 3
o: 3
r: 5
s: 6
t: 9
u: 1
v: 1
w: 6
y: 3
Of 113, 103 were printable.