fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. void print()
  7. {
  8. static int i = 1;
  9. cout << "I'm here [" << i << "]" << endl;
  10. i++;
  11. }
  12.  
  13. int main() {
  14. string test1 = "1234567890123456789";
  15. string test2 = "67890123456789";
  16. string test3 = "1234";
  17.  
  18. vector<string> all;
  19. all.push_back(test1);
  20. all.push_back(test2);
  21. all.push_back(test3);
  22. size_t iS = 5;
  23.  
  24. size_t start = 0;
  25. size_t length = 19;
  26. bool reverse = true;
  27.  
  28. try {
  29.  
  30. for (unsigned int i = 0; i < 3; i++)
  31. {
  32. string curr = all[i];
  33.  
  34. if (reverse)
  35. {
  36. size_t tempLen = length;
  37. if (iS + tempLen > curr.length())
  38. tempLen = curr.length() - iS;
  39.  
  40. start = curr.length() - (iS + tempLen);
  41. length = tempLen;
  42. }
  43.  
  44. size_t len = ((start + length) > curr.length()) ? (curr.length() - start) : length;
  45.  
  46. string part;
  47. part = curr.substr(start, len);
  48.  
  49. part.assign(part.length(), 0x2A);
  50.  
  51. cout << "Masked [" << curr << "] is [" << curr.replace(start, len, part) << "]" << endl;
  52. }
  53. }
  54. catch (exception &e)
  55. {
  56. cout << "Caught [" << e.what() << "]" << endl;
  57. }
  58.  
  59. return 0;
  60. }
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Masked [1234567890123456789] is [**************56789]
Masked [67890123456789] is [*********56789]
Masked [1234] is [****]