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

时间:2015-11-25 13:57:44

标签: c++ c++11

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

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

1 个答案:

答案 0 :(得分:1)

  1. resize必须检查length > currentlength < current - 它的行为取决于сomparison的结果。 erase总是减少字符串的长度
  2. 异常安全存在差异:
    • resize:强有力的保证:如果抛出异常,则字符串中没有变化。 (来自here
    • erase:C ++ 98 - 等于resize; C ++ 14 - 函数的无抛出版本(来自here