"q\[0\]123"
compiles?
\[
is not a backslash character followed by an opening square bracket character. It's an escape sequence. I don't remember it being a valid escape sequence, but it might be an extension in your compiler.
You need to escape the backslashes like "q\\[0\\]123"
, or use a C++11 raw string literal like R"(q\[0\]123)"
.