Actually the advice in the linked answer is wrong. as it has the indexes reversed. The declaration should be more along the lines of this:
static const char header_left[][40] =
{
" | | Raw | Raw |",
" | | Start | End |",
"Interval#| Duration | Point | Point |",
"---------+----------+-------+-------+",
};
The left-most index can still be provided by the compiler, and indicates the count of strings. The strings themselves must be a fixed char array, which you could provide an upper bound on (40, in this example). You'll get a compile-error if any string exceeds that length (including null terminator). The potential downside for your purposes is wasted space.
In any event, you can't have the compiler deduce both sizes for you - that of both arrays - and jagged arrays aren't supported in C++.