CodeWalk

std::string核心API详解:find/rfind/substr/replace

作者:孤独的心 · 2026-05-30 12:55

请详细介绍 std::string 的查找(find/rfind/find_first_of/find_last_not_of)、子串(substr)、替换(replace)、比较(compare)等核心 API 的用法及注意事项。

回答

孤独的心

std::string 核心 API:

查找

  • find(str, pos=0):从 pos 开始查找子串,返回位置或 npos
  • rfind(str, pos=npos):从后向前查找。
  • find_first_of(str, pos):查找 str 中任意字符首次出现的位置。
  • find_first_not_of(str, pos):查找不在 str 中的首字符。

子串与替换

  • substr(pos, count=npos):提取子串,pos 必须 ≤ size(),否则抛出异常。
  • replace(pos, count, str):将 [pos, pos+count) 替换为 str。
  • replace(iter_begin, iter_end, str):迭代器版本。

比较

  • compare(str):返回负数/0/正数。
  • compare(pos, count, str):子串比较。

注意事项

  • npossize_t(-1),判断时用 == string::npos
  • substr 不会抛出异常如果 pos=size() 返回空串,但 pos>size() 抛出 out_of_range
  • replace 后迭代器可能失效。