fork download
  1. #include <regex>
  2. #include <iostream>
  3.  
  4. char const* trackData = "%B341111597242000^ISO/AMEX TEST ^1412101000000000000000000000000?";
  5. enum class CardIssuer { Unknown, AmericanExpress };
  6.  
  7. CardIssuer m_issuer;
  8.  
  9. void IdentifyIssuer()
  10. {
  11. try {
  12. // Assume unknown by default to handle failures.
  13. m_issuer = CardIssuer::Unknown;
  14.  
  15. std::regex magStripe{R"(^%B(\d+)\^)"};
  16. std::cout << "blah" << std::endl;
  17. std::cmatch matches;
  18.  
  19. if (std::regex_search(trackData, matches, magStripe))
  20. {
  21. std::string const& pan = matches[1];
  22.  
  23. std::cout << pan << std::endl;
  24.  
  25. }
  26. }
  27. catch( std::regex_error const& e )
  28. {
  29. using namespace std::regex_constants;
  30.  
  31. switch(e.code())
  32. {
  33. case error_escape:
  34. std::cout << "error_escape" << std::endl;
  35. break;
  36.  
  37. default:
  38. std::cout << "unknown code" << std::endl;
  39. break;
  40. }
  41.  
  42. std::cout << e.code() << std::endl;
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. IdentifyIssuer();
  49. }
Success #stdin #stdout 0s 3500KB
stdin
Standard input is empty
stdout
error_escape
2