I do not understand why the regex pattern containing the \\d character class does not work but [0-9] does. Character classes, such as \\s
\\d
[0-9]
\\s
\d is a perl and vim character class.
Use instead:
const char *rstr = "^[[:digit:]]+\\s+\\w+\\s+[[:digit:]]+\\s+\\w+$";