【发布时间】:2020-05-19 14:55:31
【问题描述】:
在 C++ 中,我会抛出如下所示的运行时异常,
throw std::runtime_error("abcdefghijklmnopqrstuvq"+12);
抛出的异常没有前几个字符。
terminate called after throwing an instance of 'std::runtime_error'
what(): mnopqrstuvq
Aborted (core dumped)
有人可以解释这种行为吗?
如果我使用下面的 stmt 抛出异常,一切都会正常
throw std::runtime_error("abcdefghijklmnopqrstuvq"+std::to_string(12));
【问题讨论】:
-
"abcdefghijklmnopqrstuvq"+12应该从字符串中删除最火的 12 个字符,因为它是指针递增操作。它相当于获取字符串文字的地址并在其上加 12。
标签: c++ string exception integer