std::string核心API详解:find/rfind/substr/replace
请详细介绍 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):子串比较。
注意事项:
npos是size_t(-1),判断时用== string::npos。substr不会抛出异常如果 pos=size() 返回空串,但 pos>size() 抛出out_of_range。replace后迭代器可能失效。