我有一个带有以下源代码的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)

08-25 03:00