How to mask sensitive parts of a string (e.g. credit card numbers) in C++

2 Answers

0 votes
#include <iostream>
#include <string>
 
std::string maskString(const std::string& input, size_t visible = 4) {
    if (input.size() <= visible) return input;
     
    return std::string(input.size() - visible, '*') + input.substr(input.size() - visible);
}
 
int main() {
    std::string cc = "1234567899990000";
     
    std::cout << maskString(cc);  
 
}
 
  
  
/*
run:
  
************0000
 
*/


answered Dec 23, 2025 by avibootz
edited Dec 23, 2025 by avibootz
0 votes
#include <iostream>
#include <regex>
#include <string>

std::string maskDigits(const std::string& input) {
    return std::regex_replace(input, std::regex("\\d"), "*");
}


int main() {
    std::cout << maskDigits("Card: 1234-5678-9999-0000");
}

 
 
/*
run:
 
Card: ****-****-****-****

*/

 



answered Dec 23, 2025 by avibootz
...