缩短字符串时 std::string::resize 和 std::string::erase 的区别

zen*_*hoy 5 c++ c++11

缩短 a 时std::string,基本上有两种可能性:string.resize(length)string.erase(length)

鉴于我们知道字符串会变小,那么两者之间有什么区别?

Rom*_*sev 2

    \n
  1. resize必须检查是否length > currentlength < current- 它的行为取决于\xd1\x81比较的结果。erase总是减少字符串的长度
  2. \n
  3. 异常安全性存在差异:\n\n
      \n
    • resize:强保证:如果抛出异常,字符串不会发生变化。( 从这里
    • \n
    • erase:C++98 - 等于resize;C++14 - 函数没有抛出版本(来自此处
    • \n
  4. \n
\n