我有一个带有以下源代码的C ++应用程序:
if(!sortedTypedPoints.empty() && sortedTypedPoints[0].type!=PointType::START_VERTEX)
{
throw std::runtime_error("First point in the vector should be a start vertex. Point type: " + sortedTypedPoints[0].type);
}
注意:sortedTypedPoints [0] .type是一个“枚举”。
发生异常时,应用程序将停止,并且控制台中将显示不完整的消息:
抛出'std :: runtime_error'实例后调用终止
what():向量中的第一个点应该是起始顶点。点类型:
中止(核心已弃用)
您知道为什么异常消息未完全显示(第一个单词不完整且枚举值未显示)吗?
最佳答案
您正在+
和整数类型上调用const char*
。这只会简单地将字符串的开始向右移动。
如果您有C ++ 11支持,请尝试
".... Point type: " + std::to_string(sortedTypedPoints[0].type)